第一篇 逻辑门(与门、或门、非门、异或门)

一、实验目的

  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,s3reg        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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

汽车MCU虚拟化--对中断虚拟化的思考(2)

目录 1.引入 2.TC4xx如何实现中断虚拟化 3.小结 1.引入 其实不管内核怎么变,针对中断虚拟化无非就是上面两种,要么透传给VM,要么由Hypervisor统一分发。汽车MCU虚拟化--对中断虚拟化的思考(1)-CSDN博客 那么,作为车规MCU龙头…

Docker基础篇之将本地镜像发布到私有库

文章目录 1. Docker Registry简介2. 将本地镜像推送到私有库 1. Docker Registry简介 Docker Registry是官方提供的工具,可以用于构建私有镜像仓库。 2. 将本地镜像推送到私有库 下载Docker Registry docker pull registry现在我们可以从镜像中看到下载的Regist…

Go语言垃圾回收(GC原理)

1. GC回收机制 1.1 V1.3标记清除法 (1)概述 1.STW暂停 STW(暂停业务逻辑,找出可达和不可达对象) 2.对可达对象做上标记 标记完成之后,对象5和对象6不可达,被GC清除.之后STW结束. (2).缺点 STW :让程序暂停,程序出现卡顿.标记需要扫描整个heap.清除数据会产生heap碎片. 1.…

【 0 基础 Docker 极速入门】镜像、容器、常用命令总结

Docker Images(镜像)生命周期 Docker 是一个用于创建、部署和运行应用容器的平台。为了更好地理解 Docker 的生命周期,以下是相关概念的介绍,并说明它们如何相互关联: Docker: Docker 是一个开源平台&#…

JAVA基础|File,IO流

File类只能对文件本身进行操作,不能读写文件里面存储的数据 IO流就是对文件进行读写的 一. File类 (一)创建对象 import java.io.File;public class FileTest1 {public static void main(String[] args) {// 1. 创建一个File对象&#xff…

Parallels Desktop for Mac 19.4.0更新了哪些内容?有什么改进?

带来了重新设计的共享 Mac 文件夹版本,这些文件夹现在是符号链接,像指针一样指向您的 Mac 文件夹中的文件,同时仍然显示在 Windows 的本地磁盘上。 修复了由于共享文件夹问题导致 NinjaTrader 无法正常启动的问题。 修复了由于共享文件夹问…

Linux VSCode和Debug相关的备忘

在使用Linux时,总是会遇到一些意想不到的困难。而且似乎无穷无尽。这里打算写一个笔记,以后逐步来完善。特别是:调试的技能,总是占程序员的主要部分。在设置可视化调试环境过程中,常会同样陷入困境,有时深感…

小猪APP分发:如何轻松进行在线封装APP

你是否曾经因为需要封装一个新版本的APP而感到头疼?传统的封装过程往往繁琐且耗时。但是,别担心,现在有了“小猪APP分发”,一切变得如此简单。 小猪APP分发www.appzhu.net是一个专门提供在线APP封装服务的平台。无论你是开发者还…

Assignement5: Multi-threaded Producer Consumer Pipeline

Assignement5: Multi-threaded Producer Consumer Pipeline. 一起来打卡学习!

NetApp 面向医疗保健行业的解决方案

NetApp 面向医疗保健行业的解决方案 旨在为您提供令人惊叹的临床应用程序性能,并通过内置的安全性和监控功能,由无中断的运营连续性提供支持。 为护理而设计 对于专注于整个医疗保健产业链(包括提供商、付款方、生命科学)的创新能…

跟着AI学AI_02, 时域频域和MFCC

AI:ChatGPT4o 时域和频域是信号处理中的两个基本概念,用于描述信号的不同特性。 时域 时域(Time Domain) 是对信号随时间变化的描述。在时域中,信号是作为时间的函数来表示的。 时域表示:例如&#xff0…

【热点】老黄粉碎摩尔定律被,量产Blackwell解决ChatGPT耗电难题

6月3日,老黄又高调向全世界秀了一把:已经量产的Blackwell,8年内将把1.8万亿参数GPT-4的训练能耗狂砍到1/350; 英伟达惊人的产品迭代,直接原地冲破摩尔定律;Blackwell的后三代路线图,也一口气被…

【康耐视国产案例】智能AI相机联合OSARO为Zenni眼镜实现订单履约自动化

在电商潮流下,Zenni眼镜作为全球领先的在线眼镜零售商,每年销售超过600万副眼镜,却面临着一个独特而复杂的问题——需要通过扫描眼镜盒内的条形码来处理订单。传统手动处理已经到达流程瓶颈,急需一种更加自动化、可扩展的方法。为…

Pikachu靶场下载、配置

目录 下载 配置 新版小蓝皮 搭建网站 搭建数据库 初始化靶场 旧版小绿皮 配置数据库 配置网站 下载 GitHub下载地址: 百度网盘:https://pan.baidu.com/s/1j2WpdLvwAbmpAH76d_yitw?pwdwf8j 提取码:wf8j 迅雷链接:http…

【STL深入浅出】之从零到精通:vector使用与模拟

📃博客主页: 小镇敲码人 💚代码仓库,欢迎访问 🚀 欢迎关注:👍点赞 👂🏽留言 😍收藏 🌏 任尔江湖满血骨,我自踏雪寻梅香。 万千浮云遮碧…

thinkphp6 queue队列的maxTries自定义

前景需求:在我们用队列的时候发现maxtries的个数时255次,这个太影响其他队列任务 我目前使用的thinkphp版本是6.1 第一部定义一个新的类 CustomDataBase(我用的mysql数据库存放的队列) 重写__make 和createPlainPayload方法 …

每日两题 / 34. 在排序数组中查找元素的第一个和最后一个位置 33. 搜索旋转排序数组(LeetCode热题100)

34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣&#xff08;LeetCode&#xff09; 根据二分函数&#xff0c;得到>target和<target的两个&#xff0c;分别是答案的l和r class Solution { public:vector<int> searchRange(vector<int>& nums,…

【Uniapp小程序】自定义导航栏uni-nav-bar滚动渐变色

效果图 新建activityScrollTop.js作为mixins export default {data() {return {navBgColor: "rgba(0,0,0,0)", // 初始背景颜色为完全透明navTextColor: "rgba(0,0,0,1)", // 初始文字颜色};},onPageScroll(e) {// 设置背景const newAlpha Math.min((e.s…

小学数学出题器-Word插件-大珩助手

Word大珩助手是一款功能丰富的Office Word插件&#xff0c;旨在提高用户在处理文档时的效率。它具有多种实用的功能&#xff0c;能够帮助用户轻松修改、优化和管理Word文件&#xff0c;从而打造出专业而精美的文档。 【新功能】小学数学出题器 1、实现了难度设定&#xff1b;…

HCIP-Datacom-ARST自选题库__MAC【14道题】

一、单选题 1.缺省情况下&#xff0c;以下哪种安全MAC地址类型在设备重启后表项会丢失? 黑洞MAC地址 Sticky MAC地址 安全动态MAC地址 安全静态MAC地址 2.华为交换机MAC地址表中的动态sticky MAC地址的默认老化时间是多少秒? 300 不会老化 400 500 3.华为交换机MA…