1、2 写出使用TTL小规模集成电路芯片74LS00完成半加器的设计和实现的完整过程(根据功能要求列真值表-写输出函数-将输出函数变换成“与非门”形式-画出电路图-根据芯片引脚连线-验证结果)3 结合实验中接触和使用的小规模集成电路,请说说什么是集成电路?常用的中小规模集成电路产品有哪些? 4 实验过程中你遇到了哪些问题?实验刚开始时,你觉得计算机硬件课程的实验最难理解的地方在哪里?5 实验一和实验二使用两种不同的方式(小规模集成电路,可编程器件)实现全加器电路,就两种方式谈谈你实验的体会。实验二 FPGA设计流程 全加器II EDA/SOPC实验开发平台,实验二以后的所有实验都使用此开发平台。根
2、据实验平台提供的Altera公司可编程器件FPGA(现场可编程门阵列),使用Altera公司的EDA设计开发工具QuartusII,用原理图方式设计实现全加器电路,电路的输入接实验平台开关,电路输出接实验平台的发光管。希望同学们能够通过实验掌握使用可编程器件设计实现数字电路的方法。 使用可编程器件进行数字电路设计,将传统的“设计硬件搭试焊接”过程变为“设计编译下载”的过程,其主要工作都在计算机内完成,先将设计输入计算机,再由开发系统将其转换成编程文件下载到可编程器件中。 全加器电路图的设计同实验一。1 新建工程实验室机器安装的设计环境为:Quartus II Version 9.0。双击桌面图
3、标,运行Quartus II软件。用New Project Wizard工具选项创建此设计的工程,并设计相关信息。点击菜单项File- new project wizard,出现introduction对话框,如图 1。图 1单击next,进入Directory,name,Top-Level Entity设置对话框,选择工程存放路径(请在E盘或F盘新建一个工程相文件夹,实验室的C盘、D盘及桌面被保护)、工程名称和顶层模块名称(本例工程名和顶层模块名均设为fadder。)注意:所有的名称和路径均不能包含空格和汉字。如图 2。图 2跳过图 3所示Add Files对话框,该对话框设置用来将已存在的
4、设计文件加入到工程中。图 3点击next,进入Family & devices settings对话框,指定FPGA器件为Cyclone系列的EP1C12F324C8,如图 4。Cyclone系 列FPGA是Altera公司最初(2002年)的低成本FPGA。2004年和2006年,Altera公司又推出了更新的,密度更高的Cyclone II和Cyclone III系列FPGA,进一步巩固它在大批量、低成本应用解决方案中的地位。图 4图 5图 5对话框用来设置第三方EDA工具,包括综合工具,仿真工具和时序分析工具,这里我们点击Next跳过。图 6信息显示区编译状态区资源管理区工程工作区标题栏
5、菜单栏工具栏图 7最后,新建工程向导会根据你之前一步一步的设置,给出一个工程设置概述页如图 6,单击finish完成工程创建。完成后,QuartusII界面如图 7所示。所有在新建工程向导中进行的设置,在工程建立完成后,都可以通过QuartusII菜单项进行修改。2 设计输入 new,出现新建源文件对话框如图 8,数字电路的设计文件总的来说有两种方式,原理图方式和硬件描述语言方式,这次实验我们使用原理图方式设计电路,所以选择新建一个“Block Diagram/Schematic File”文件,图 8,点击“OK”按钮,打开原理图编辑器。图 8原理图编辑器的工具栏如图 10所示,工具栏上的按
6、钮作用依次分别是“分离窗口切换”、“选择”,“添加文字”、“符号工具”、“块工具”、“正交结点工具”、“正交总线工具”、“正交管道工具”、“橡皮筋工具”、“部分线选择工具”、“放大缩小工具”、“全屏”、“查找工具”、“水平翻转”、“垂直翻转”、“逆时针90度翻转”、“矩形工具”、“椭圆工具”、“直线工具”、“弧线工具”。图 9 QuartusII提供了许多基本库元件给用户使用,根据实验一全加器的设计,共需要9个“2输入与非门电路”模块。在原理图编辑区的空白处双击鼠标,或点击符号工具打开Symbol对话框如图 9。在Symbol对话框中,设计全加器电路需要的“与非门”可以通过选择 “Primit
7、ives-logic”基本原件库中的“nand2”模块,点击“OK”,将该模块加入原理图中。 重复该过程,或在原理图编辑区选中已经添加好的nand2模块,使用Ctrl+C和Ctrl+V继续添加。 全加器电路的输出端口和输入端口,在Symbol对话框中,使用 “Primitives-pin”库中的“input”模块和“output”模块,添加到原理图中。添加完成后,可以在原理图中双击各个输入输出模块,为它们改名,尽量让端口名称具有可读性,本例可改为Ai、Bi、Ci-1、SHi、Si、Ci如图 11。 与非门、输入端口、输出端口之间的连接使用“正交结点工具”完成。 完成后的原理图如图 11。图 1
8、0图 11设计输入完成后,保存文件,将模块名命名为顶层模块名,即新建工程时指定的顶层模块名,本例为:fadder.bdf。新建的文件默认情况下会自动加入到工程中。3 逻辑综合为工程添加好设计文件以后,下一步就是对工程设计进行综合,本例使用QuartusII软件内嵌的分析综合工具Analysis & Synthesis进行。点击工具栏中按钮,对设计进行综合。Analysis & Synthesis将检查工程的逻辑完整性和一致性。设计如果综合通过,编译状态显示区中Analysis & Synthesis步骤前面会显示绿色的勾,如果设计有错误,会显示红色的叉,如图 12,出错行号及错误原因会显示在信
9、息显示区中,如图 13。图 12图 13根据错误原因提示修改设计,完成修改后,重新综合,直到综合通过,资源管理区中可以点击顶层模块名称前的号,显示模块间的树形结构,编译状态显示区的Analysis & Synthesis步骤前显示绿色的勾,如图 14。图 14初学者往往不习惯阅读错误信息。实际上学会读懂错误信息是很有用的!4 功能仿真在综合通过以后,只能够说明设计符合语法规范,但并不能保证设计满足功能要求,需要通过功能仿真,来验证电路功能是否符合设计要求,功能仿真的考察是的电路在理想环境下的行为,不考虑电路门延迟与线延迟。这里使用QuartusII自带的波形图仿真工具进行。1) 新建仿真波形图
10、文件要使用QuartusII自带的波形图仿真工具进行仿真,首先要新建一个波形图文件。在File菜单中选择New,出现如图 8中所示对话框,在Verification/Debugging Files页中选择Vector Waveform File,点击OK按钮,出现一个空的波形图文件,如图 15。图 152) 添加观察信号结点用菜单Edit-Insert-Insert Node or Bus,打开如图 16所示对话框。可以直接在Name文本框中直接输入信号名称,也可以通过点击按钮Node Finder,打开结点查询对话框来如图 17,来添加需要观察的信号。图 16本例在Node Finder对话
11、框的Filter选项下拉菜单中选择Pins:all,然后点击List按钮,在Nodes Found列表中,选中Ai、Bi、Ci-1、SHi、Si、Ci信号,双击或使用按钮,将它们添加到观察信号中。最后点击“OK”按钮,完成观察信号的添加。图 173) 编辑输入波形在Name栏中选中输入信号的名称,这组输入信号所在的行将被高亮,如图 18。通过菜单Edit-Value,或者直接使用工具栏按钮对输入信号的波形进行设定。图 18如图 19工具栏上的按钮作用分别是“分离窗口切换”、“选择”,“添加文字”、“编辑波形”、“放大缩小”、“全屏幕切换”、“查找”、“替换”、“设置为Unknown”、“置0”
12、、“置1”、“设置为高阻”、“设置为Weak Unknown”、“设置为Weak Low”、“设置为Weak High”、“设置为Dont Care”、“设置为取反”、“设置计数值”、“设置时钟”、“设置为任意值”、“设置随机值”、“贴齐网格线”、“排序”。图 19信号添加完成并且编辑好波形后,保存文件,本例为fadder.vwf。4) 在QuartusII中指定仿真文件用菜单Assignment-Setting在Simulator Settings中,设置Simulation mode为“Functional”,设置fadder.vwf为仿真输入文件,仿真结束的条件可以根据需要在Simula
13、tion Period项中选择,如图 20选择仿真运行80ns结束。点击“OK”按钮完成设置 。图 205) 生成功能仿真网表用菜单ProcessingGenerate Functional Simulation Netlist。如果缺少这一步,在仿真运行时,QuartusII产生出错提示:“Error: Run Generate Functional Simulation Netlist (quartus_map seven_seg -generate_functional_sim_netlist) to generate functional simulation netlist for
14、top level entity seven_seg before running the Simulator (quartus_sim)”,无法完成仿真。6) 运行仿真通过工具栏按钮启动仿真。7) 观察分析仿真结果仿真完成后,根据生成的仿真波形图,对比全加器真值表,分析结果是否正确。本例结果如图 21。图 215 布局布线1) 约束引脚FPGA电路板与实验平台上各个资源模块(如本实验的LED Switches & Buttons模块)之间的连接是固定的,应该根据它们之间的连接关系对FPGA的引脚进行引脚约束。约束引脚是将顶层设计文件的输入输出端口指定到FPGA器件的实际引脚。引脚对应关系见附
15、表。使用菜单项Assignment-Pins进入引脚分配编辑窗口,完成后的分配图 22。图 22不要忘记引脚约束! 在以后的设计中,如果忘记了导入引脚约束文件,编译也不会报错,此时由软件自动分配未约束的引脚,但是和实际连接关系就不一致了。后果是不能通过在实验仪上的验证。2) 布局布线、生成编程文件引脚约束完成后,在QuartusII界面的工具栏中,点击按钮,对设计进行全编译。此外,也可以使用菜单项Processing-Compiler Tool打开编译工具对话框,如图 23,点击Fitter区域中的按钮和Assembler区域中的按钮来执行布局布线和生成编程文件,也可以直接点击Start按钮来
16、完成全编译过程。图 23如果设计文件或引脚约束有改动,一定要重新进行全编译。6 时序仿真(附加题,有兴趣的同学选择完成)功能仿真不考虑传输延迟,主要目的是检查逻辑功能有没有错误,是否符合设计要求。时序仿真包含了延时信息,它能较好地反映芯片的工作情况。Setting在Simulator Settings中,更改设置Simulation mode为“Timming”,设置完成后重新运行仿真,观察结果,本例如图 24。图 24与功能仿真时得到的波形图不同,在时序仿真得到的波形图没有那么完美,因为信号经过任何门电路和导线都存在一个时间延迟问题,,使得电路的输入到达稳定状态时,输出并不一定能立即达到稳定
17、状态。观察电路延迟的情况。7 配置器件(或称编程、下载)对可编程器件FPGA进行配置(编程),俗称下载,下载前打开实验平台电源。点击工具栏按钮,或使用菜单项Tool-Programmer进入器件编程话框,如图 25。单击按钮,可以选择编程电缆硬件设置,如图 26,因为实验设备使用的是USB-Blaster下载电缆,所以本例中使用USB-Blaster作为硬件接口。设置完编程硬件后,在编程界面,在Mode中选择编程模式,本例使用JTAG模式。勾选Program/Configure选项框,单击按钮开始器件编程。在Process进度条中会显示编程进度。完成后,在QuartusII的信息显示区中,会报
18、告成功或出错信息;注意:信息显示在QuartusII的信息显示区中,不在编程窗口中。编程界面左侧的其它按钮分别表示停止编程;自动检测编程硬件是否连接;删除编程文件;更改选中的编程文件;保存文件;添加用户自定义的器件;更改编程文件的顺序。图 25图 26 8 测试验证器件被成功配置后,就可以进行验证了。拨动连接全加器输入端口Ai,Bi,Ci的开关,观察连接全加器输出端口Si,Ci的发光管显示是否正确。实验三 七人表决器使用EDA设计开发工具QuartusII,以原理图方式设计实现七人表决器电路,当表决器的七个输入中有4个以上(含4个)为“1”时,u表决器输出为“1”,否则为“0”。用七个开关作为
19、表决器的七个输入,输入为逻辑“1”时表示表决者“赞成”,输入为“0”代表“不赞成”。用二个发光管作为表决器的输出,发光管点亮( 逻辑1)表示表决“通过”,发光管熄灭表示表决“不通过”。七人表决器的方案很多,这里给出一个使用多个一位全加器实现的电路参考,见“设计输入”,其中的一位全加器我们利用实验二的设计。1 实验准备打开QuartusII环境,使用File-Open Project打开上一次的全加器实验工程,双击顶层模块打fadder开原理图文件,然后使用File-Create/_Update-Create Symbol Files For Current File,将顶 层原理图方式设计的全
20、加器模块转换为符号文件fadder.bsf。在E盘或F盘新建一个文件夹(所有的名称和路径均不能包含空格和汉字),将实验二全加器工程中的全加器原理图文件fadder.bdf,以及刚才生成的全加器符号文件fadder.bsf,一起拷入新建的文件夹中。2 新建工程参考实验二指导,在上一步新建的文件夹内创建QuartusII工程,工程名和顶层模块名均设为seven。3 设计输入 new,新建原理图Block Diagram/Schematic文件,在空白编辑区内双击鼠标左键,或使用符号工具,打开symbol对话框。在Libraries中,除了QuartusIIa提供的库元件外,由于在“实验准备”步骤中
21、,往工程文件夹内中拷入了fadder.bsf符号文件, 所以在Project树下,可以看见当前工程路径下自己定义的元件fadder.bsf。点击“OK”按钮,将fadder模块加入原理图中。 重复该过程,共添加4个一位全加器模块。 在Symbol对话框中,使用 “Primitives-pin”库中的“input”模块和“output”模块,为设计添加输入端口和输出端口。使用“Primitives-logic”库中的“not”模块,,输出端口pass取反后送给 输出端口deny。 模块之间的连接使用“正交结点工具”完成后的原理图如下,保存文件(本例为seven.bdf)。4 逻辑综合参考实验二指
22、导。Pins进行引脚分配,完成后引脚分配如下图。6 编程7 验证拨动开关,观察发光管,验证在所有输入条件下的输出结果是否正确。1 完善设计:在表决通过时,用实验平台上的扬声器报鸣提示;在原基础上使用数码管显示赞成票数,写出设计方法。(提示:票数就是几个一位全加器计算出来的最后的结果;想在数码管上显示,需要设计译码器电路。)2 使用VHDL 语言设计七人表决器电路。附:数码管段码表发光二极管组成的显示器是嵌入式应用产品中最常用的廉价输出设备。它由若干个发光二极管按一定的规律排列而成。当某一个发光二极管导通时,相应的一个或一笔画被点亮,控制不同组合的二极管导通,就能显示数字和少量字符。常用的七段显
23、示器如下图。一位显示器由八个发光二极管组成,其中七个发光二极管ag控制七个笔画(段)的亮或暗,另一个控制一个小数点的亮和暗。实验平台上的七段数码管是共阴极的(发光二极管阳极连在一起称为共阳极显示器,阴极连在一起称为共阴极显示器),也就是输出为高电平的时候,二极管会导通。例如显示一个“0”,就是abcdef导通,gh截止。根据表可知,段码为3FH。实验平台上有八个数码管,它们的abcdefgh都连接在一起,由用户控制,8个数码管的位选信号由一片74LS138译码器提供, 译码器的输入端(SEL0,SEL1,SEL2)由用户控制,例如SEL0,SEL1,SEL2若为为000, 就选中最右边的数码管
24、,而其余数码管关闭。表 七段数码管段码表显示16进制hgfedcba3F10625B34F46656D67D70787F96FA77B7CC39D5EE79F71数码管译码显示设计参考实验平台上的数码管显示模块的电路原理,以及数码管的输入与与FPGA的管脚连接关系如下面的图、表所示:信号名称对应FPGA管脚名说明7SEG-AH3七段码管A段输入信号7SEG-BH4七段码管B段输入信号7SEG-CK5七段码管C段输入信号7SEG-DL5七段码管D段输入信号7SEG-EK4七段码管E段输入信号7SEG-FL3七段码管F段输入信号7SEG-GL4七段码管G段输入信号7SEG-DPM3七段码管dp段输
25、入信号7SEG-SEL0G4七段码管位选输入信号7SEG-SEL1G37SEG-SEL2F4 如果只需要在数码管上显示16进制数据0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F,可以参考下面的代码设计一个4-7译码器。同学们知道1个16进制数据可以由四个二进制位表示,设计用四位的向量输入端口switch来表示四个二进制位;用7位的向量输出端口ledaq来表示数码管的七段(dp小数点段未考虑),根据七段数码管段码表,进行译码器描述。向量输出端口sel用来选择点亮8个数码管中的哪一个,本例中sel2:0设置为为“000”, 点亮最右边的数码管,而其余数码管关闭,同学们也可根据自己的需要选择点亮其它数码管。library ieee;use ieee.std_logic_1164.all;entity Decode4_7 is port( switch : in std_logic_vector(3 downto 0) ; -四位输入信号 ledag : out std_logic_vector(6 downto 0);-8个数码管的7段输出 sel : out std_logic_vector(2 downto 0) - 8个数码管的位选输出 );end Decode4
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1