逻辑门(与门、或门、非门、异或门)

一、实验目的

  1. 了解DE1-SOC开发板一些外设。

  2. 掌握常用组合逻辑门电路的基本原理。

  3. 学习Verilog HDL的基本语法。

  4. 学习使用ModelSim工具对设计的电路进行仿真,包括编写Testbench仿真代码,以及ModelSim工具的使用。

  5. 熟悉使用Quartus软件从创建Quartus工程到最终配置FPGA并观察实验现象的流程。

二、逻辑门电路介绍

逻辑门电路是数字电路中最基本的单元电路,是构成各种逻辑功能电路的基本电路。常用的逻辑门电路在逻辑功能上有与门、或门、非门、与非门、或非门、异或门。本实验主要介绍其中的与门、或门、非门和异或门。

1. 与门

与门又称逻辑与电路,是执行与运算的基本逻辑门电路,有多个输入端,一个输出端。当所有的输入同时为高电平(逻辑1)时,输出才为高电平,否则输出为低电平(逻辑0)。

如下表1.1所示为二输入与门的真值表。

表1.1 二输入与门真值表 ​

输入A输入B输出S
000
010
100
111

下图所示为二输入与门逻辑符号。

image-20210629111458092

以上二输入与门用逻辑运算表达式可表示为S = A&B,用Verilog HDL描述该与门的代码语句为:

assign S = A & B;

2. 或门

或门又称逻辑或电路。如果几个条件中,只要有一个条件得到满足,某事件就会发生,这种关系叫做或逻辑关系。或门有多个输入端,一个输出端,只要输入中有一个为高电平时(逻辑1),输出就为高电平(逻辑1);只有当所有的输入全为低电平(逻辑0)时,输出才为低电平(逻辑0)。

如下表1.2所示为二输入或门的真值表。

表1.2 二输入或门真值表 ​

输入A输入B输出S
000
011
101
111

下图所示为二输入或门逻辑符号。

image-20210629111642275

以上二输入或门用逻辑运算表达式可表示为S = A + B,用Verilog HDL描述该或门的代码语句为:

assign S = A | B;

3. 非门

非门实现逻辑代数非的功能,即输出始终和输入保持相反。当输入端为高电平(逻辑1)时,输出端为低电平(逻辑0);反之,当输入端为低电平(逻辑0)时,输出端则为高电平(逻辑1)。

如下表1.3所示为非门的真值表。

表1.3 非门真值表 ​

输入A输出S
01
10

下图所示为非门逻辑符号。

image-20210629111744098

非门用逻辑运算表达式可表示为S= ~A,用Verilog HDL描述该非门的代码语句为:

assign S = ~ A;

4. 异或门

异或门是数字逻辑中实现逻辑异或的逻辑门,有多个输入端、一个输出端。若输入端的电平不同,则输出为高电平1;若输入端的电平都相同,则输出为低电平0。

如下表1.4所示为二输入异或门的真值表。

表1.4 异或门真值表​

输入A输入B输出S
000
011
101
110

下图所示为二输入异或门逻辑符号。

image-20210629111910724.png

以上二输入异或门用逻辑运算表达式可表示为S = A xor B ,用Verilog HDL描述该异或门的代码语句为:

assign S = A ^ B;

也可以用以下代码语句表示:

assign S = (~A & B) | (A & ~B);

三、逻辑门实验任务

设计并实现二输入与门、或门、异或门以及非门电路,两个操作数用DE1-SOC的滑动开关控制,并将该四个门电路的输出结果显示在DE1-SOC开发板的4个LED上,通过操作SW滑动开关观察LED相应的变化来验证所设计电路的正确性。

1. 硬件介绍

滑动开关

如下图所示,DE1-SOC开发板上有10个滑动开关,可在电路中用作电平触发的数据输入。每个滑动开关都连接到Cyclone V FPGA对应的一个引脚,当某个滑动开关拨到向上(up)的位置时,会产生一个高电平到FPGA;当拨到向下(down)的位置时,会产生一个低电平到FPGA。

img

LED

如下图所示,DE1-SOC开发板上有10个红色LED。每个LED连接到Cyclone V FPGA对应的一个引脚,将这些引脚输出设置为高电平1即可点亮对应的LED,反之设置低电平0$即可使对应的LED熄灭。

img

2. 设计思路

本实验所实现的电路,包含了与门、或门、非门以及异或门。与门、或门以及异或门的输入为ab,而输出分别为s0s1s2。非门的输入为a,输出为s3。在DE1-SOC实现该电路时,将SW[0]SW[1]作为输入ab,将LEDR[3]~LEDR[0]作为输出s3~s0

img

如下图举例显示了该逻辑门电路的波形图。

image-20210709160125235

四、逻辑门电路设计

1. 创建一个新Quartus工程

(1) 点击电脑右下角的开始菜单找到Quartus软件,双击Quartus (Quartus Prime 17.1)打开Quartus Prime软件。

img

点击菜单File-->New Project Wizard弹出工程创建的对话框。

img

(2)在弹出的对话框中点击Next。

img

(3)在您的DE1-SOC 工作文件夹下创建一个lab1的文件夹,并将工程路径指向该文件夹,且工程的名称也命名lab1。

img

(4)连续点击3次Next得到如下界面,通过器件过滤器筛选选中DE1-SoC的Cyclone V 5CSEMA5F31C6器件。

img

(5)点击Next两次后得到工程的生成报告窗口,检查无误后点击Finish完成工程创建。

img

img

(6)点击Quartus菜单File——New新建一个.v文件。

img

(7)选择Verilog HDL File,然后点击OK完成top文件.v文件的创建。

img

(8)在新建的空白.v文件敲入如下Verilog代码,然后点击保存,文件名保持默认的logic_gates.v即可。

module logic_gates( //模块开头以module开始,模块命名为logic_gates
input a, //1位数据输入信号a
input b, //1位数据输入信号b
output s0, //1位输出信号s0
output s1, //1位输出信号s1
output s2, //1位输出信号s2
output s3 //1位输出信号s3
);
​
assign s0 = a & b; //将与逻辑运算结果赋值给输出信号s0
assign s1 = a | b; //将或逻辑运算结果赋值给输出信号s1
assign s2 = ~ a; //将非逻辑运算结果赋值给输出信号s2
assign s3 = a ^ b; //将异或逻辑运算结果赋值给输出信号s3
​
endmodule //模块以endmodule结束

img

(9)点击Quartus软件工具栏的Processing --> Start --> Start Analysis & Synthesis或点击

image-20210603145513555

按钮对Verilog HDL代码执行语法检查和综合,该过程成功完成之后在Quartus软件窗口的Tasks页面中,Analysis & Synthesis旁边将显示一个绿色勾型标记,如下图所示。如果在该过程中提示有错误,请检查Verilog HDL代码语法,确保与上述代码块完全一致。

img

2. 对电路进行仿真

对Verilog HDL代码进行语法分析与综合确认无误之后,就可以对设计进行功能仿真(也称之为前仿真)了,这个操作是为了验证电路逻辑功能是否符合设计要求。通过功能仿真可以及时发现设计中的错误,在系统设计前期即可完成修改,提高设计可靠性。

(1) 点击Quartus软件工具栏的File --> New --> Verilog HDL File,点击OK,这样就新建了一个空白Verilog HDL文件,再点击File --> Save As ...保存,命名为logic_gates_tb.v。然后将如下仿真代码保存到logic_gates_tb.v文件中。

`timescale 1ns/1ps
​
module logic_gates_tb;  //定义逻辑门测试仿真模块,包含输入信号a,b以及输出信号s0,s1,s2,s3
    reg        a;
    reg        b;
    wire    s0;
    wire    s1;
    wire    s2;
    wire    s3; 
  
    logic_gates logic_gates_inst(    //例化逻辑门模块
​
      .a    (a),
      .b    (b),
      .s0    (s0),
      .s1    (s1),      
      .s2    (s2),     
      .s3    (s3)
);
​
  initial begin                      //设置输入信号a,b的四种不同输入组合
    // 
    a = 1'b0;
    b = 1'b0;
    # 20;
    // 
    a = 1'b0;
    b = 1'b1;
    # 20;
    //
    a = 1'b1;
    b = 1'b0;
    # 20;
    //
    a = 1'b1;
    b = 1'b1;
    # 20;
  end
​
endmodule

img

(2)要先将Modelsim 的安装路径设置一下,然后Quartus系统才可以自动调用指定的仿真工具。依次点击Quartus菜单Tools——Options...

img

将仿真工具路径指定到...intelFPGA_lite\17.1\modelsim_ase\win32aloem。

img

(3)点击Quartus软件工具栏的Assignments --> Settings,在弹出的Settings窗口中,选中Simulation栏,Tool name选择ModelSim-Altera,设置Quartus自动调用ModelSim。然后选择添加Test Bench文件。

img

img

img

img

点击Add和OK后,再点击OK、Aplly和OK完成仿真工具和仿真文件的设置。

img

(4)击Quartus软件工具栏的Tools --> Run Simulation Tool --> RTL Simulation启动ModelSim仿真。

img

(5)点击Wave选项卡切换到仿真波形窗口此时还看不到完整的仿真波形,可以通过点击下图所示的Zoom Full按钮来显示完整的波形。

img

img

img

从上面波形图可以看出:

a. 当输入a=0,b=0时,四个输出分别为s0=0,s1=0,s2=1,s3=0;

b. 当输入a=0,b=1时,四个输出分别为s0=0,s1=1,s2=1,s3=1;

c. 当输入a=1,b=0时,四个输出分别为s0=0,s1=1,s2=0,s3=1;

d. 当输入a=1,b=1时,四个输出分别为s0=1,s1=1,s2=0,s3=0。

结果与预期一致,说明本实验要求的逻辑门电路已实现。

3. 引脚分配和全编译

一般功能仿真也可以跳过不做,在分析和综合的步骤完成以后,就可以进行FPGA引脚分配了。点击Assignments——Pin Planner弹出引脚分配窗口,按照DE1-SOC 用户手册或者电路图进行引脚分配。

img

img

关于引脚分配信息可以查看DE1-SoC_v.5.1.3_HWrevF.revG_SystemCD\UserManual\DE1-SoC_User_manual.pdf第 25、26页或者E:\CD_Package\01-DE1-SoC\DE1-SoC_v.5.1.3_HWrevF.revG_SystemCD\Schematic\DE1-SoC.pdf的第3页。

这里,a和b两个操作数可以通过拨码开关SW0、SW1来控制,s0到s3信号分别输出到LEDR0到LEDR3。

img

img

img

关闭Pin Planner窗口,点击如下按钮进行工程的全编译。

img

如果编译成功,Quartus窗口右下角会显示100%,同时会在...lab1\output_files文件夹下生成一个logic_gates.sof文件。

img

4. 下板测试

(1)将DE1-SOC开发板和电脑用板子自带的白色USB type B 线缆连接起来。给DE1-SOC插上电源并按SW11按键进行开机。

img

(2)打开Quartus的Programmer工具,点击Hardware Setup,选择DE-SOC[USB-1]端口。

img

img

(3)点击Auto Detect,选择DE1-SOC对应的FPGA器件5CSEMA5。

img

img

(4)这时会出现两个器件(5CSEMA5和SOCHPS),右击器件5CSEMA5,选择Change File...,然后选择...\lab1\output_files路径下的logic_gates.sof文件。

img

(5) 然后勾选Program/Configure复选框,点击Start按钮开始配置FPGA。

img

进度条显示100%代表FPGA 配置成功。

img

(6)拨动SW0和SW1观察LEDR0-3的现象。

SW1、SW0分别为00:

img

SW1、SW0分别为01:

img

SW1、SW0分别为10:

img

SW1、SW0分别为11:

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/676557.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是Swagger UI ,swagger ui 的authorization怎么获取?

什么是Swagger UI Swagger UI 是一个用于可视化和交互式地展示API文档的工具。它是Swagger(现称为OpenAPI)生态系统的一部分,旨在帮助开发者和API用户更好地理解、测试和调试API。 主要功能和作用 1. API文档自动生成: Swagge…

【Java高级教程】集合部分

参考链接 一、 Java 数据结构 二、 Java 集合框架 三 Java ArrayList 四 Java LinkedList 五 Java HashSet 六 Java HashMap 七 Java Iterator(迭代器) 八 Java Object 类 ava Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Obj…

常用ai模型和一些术语的科普

本文是早年浏览easyai.tech后留下的笔记。 文章目录 神经网络CNNRNNGANKNNCPU和GPU/TPUNLPNo free lunch theoremtransformer注意力机制自动编码器,自编码器GNN推荐系统附录NFL的两个例子 神经网络 水流,水龙头,流量阀。 可以回想CNN分类MNI…

StretchSense:将手部动作无缝集成到Xsens全身动捕系统中

在动画制作中逼真的手部动作可以大幅提升角色的情感表现能力,这将使观众更加轻易的走进角色,感受角色的情感变化并更加快速的了解角色的性格特点。如性格外向的角色将拥有更加复杂的手部动作表达。因此有效加强角色的手部动画真实度有助于吸引更多的观众…

基于Java+Vue智慧社区管理系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还…

22-验证码的处理

验证码这种问题是比较头疼的,对于验证码的处理,不要去想破解方法,这个验证码本来就是为了防止别人自动化登录的。 目前最快速解决的三个手段: 去掉验证码:比较适合新开发但未上线的系统。设置万能码:比较适…

【GD32】06 - SPI (含ST7735S TFT-LCD屏幕驱动)

这篇文章我们看看GD32中如何实现SPI,软件SPI的话可以参考我之前的文章,把对应操作GPIO口的代码从STM32改成GD32就可以使用了。 【快速上手STM32】SPI通信协议&&1.8寸TFT-LCD(ST7735S)_tftlcdst7735和stm32-CSDN博客文章浏…

docker部署skywalking

skywalking版本下载 1:拉取skywalking的oap镜像(可以选择自己的版本,最好与ui,agent版本一致) docker pull apache/skywalking-oap-server:9.5.02:启动oap docker run -d -p 11800:11800 -p 12800:12800 --name sw_oap apache/…

HCIE数通,为啥是网工的“黄金标准”?

作为网络工程师,你不可能没听说过HCIE,也不可能没听过数通,也可能曾经考虑过要不要挑战这个认证。 HCIE数通为何被誉为网工的黄金标准?聊聊 01 什么是HCIE数通? HCIE数通认证是华为技术有限公司推出的一项高级别认证…

深度学习-05-反向传播理论知识

深度学习-05-反向传播理论知识 本文是《深度学习入门2-自製框架》 的学习笔记,记录自己学习心得,以及对重点知识的理解。如果内容对你有帮助,请支持正版,去购买正版书籍,支持正版书籍不仅是尊重作者的辛勤劳动&#xf…

使用 IPSET 添加 CDN 节点 IP(IPv4/IPv6)到防火墙白名单

明月的服务器一直使用的是 iptables,随着近几年 IPv6 的普及,明月切身体会到还是 IPSET 最方便了,无论你是 IPv4 还是 IPv6 都可以方便的管理,无论你是加入白名单还是黑名单,都非常的简单高效!今天就参照明月自己的实操…

PyQt5串口测试工具

笔者经常会遇到使用上位机进行相关测试的场景,但现成的上位机并不能完全满足自己的需求,或是上位机缺乏使用说明。所以,自己写? 环境说明 pycharm 2023.2.25 python 3.10 anaconda 环境配置 conda create -n envsram ##…

Proxmox Backup Server 命名空间使用

作者:田逸(formyz) Proxmox Backup Server(一下统称PBS)从2.2版本开始,新增了命名空间这样一个功能。这个功能大大便利了多Proxmox VE集群或者单节点备份,在以前PBS版本中,如果有多个…

Windows系统下DOS命令

Windows系统下DOS命令 1. 与文件操作相关1.1 mkdir,md命令1.2 rmdir、rd命令1.3 dir命令1.4 start命令1.5 echo命令1.6 type命令1.7 copy命令1.8 move命令1.9 copy和move的区别1.10 del命令1.11 rename命令1.12 attrib命令1.13 fsutil命令1.14 assoc命令 2. 与网络相…

DevOps生命周期的8个阶段和DevOps pipeline 详解

您可能也在探索DevOps pipeline或工作流的概念,这些术语可能会根据不同的解释者而有所交替使用。尽管如此,DevOps生命周期和DevOps pipeline这两个术语更常被提及。 本文将首先阐述DevOps生命周期的概念,然后深入介绍DevOps pipeline。 Dev…

基于4G工业路由器的信息发布系统物联网应用方案

随着物联网技术的快速发展,智能信息发布系统已成为城市管理和信息传播的重要工具。而4G工业路由器作为连接信息发布终端与云平台的关键设备,其在提升信息发布效率方面发挥着至关重要的作用。为了提升智能信息发布系统的效率和智能化水平,智联…

怎么在pdf上编辑文字?帮你解决这个头疼的问题!

在信息爆炸的时代,PDF作为一种通用性极强的文件格式,广泛应用于各个领域。然而,对于许多用户来说,如何在PDF上编辑文字却是一个令人头疼的问题。今天,我们就来聊聊这个话题,并为大家推荐几款实用的PDF编辑软…

Python程序设计 身份证号的奥秘

第1关:判断性别 通过身份证的第17位也就是倒数第二位的数字可以辨别该身份证所属人的性别,奇数为男性,偶数为女性。 任务:输入身份证号,第17位若是偶数,输出男性,否则输出女性 如何截取字符串的一个字符 如何判断一个…

【YOLO 系列】基于YOLO V8的河道违规钓鱼检测识别系统【python源码+Pyqt5界面+数据集+训练代码】

前言: 随着社会发展和人口增长,对自然资源的保护和管理变得越来越重要。河流是重要的自然资源之一,对生态系统和人类社会都至关重要。然而,违规钓鱼等活动可能对河流生态环境造成严重破坏,并影响水域资源的可持续利用…

Codeforces Round 920 (Div. 3) E. Eat the Chip 题解 博弈论 贪心

Eat the Chip 题目描述 Alice and Bob are playing a game on a checkered board. The board has h h h rows, numbered from top to bottom, and w w w columns, numbered from left to right. Both players have a chip each. Initially, Alice’s chip is located at th…