大学_数电仿真实验报告_调查报告_表格模板_实用文档.docx_第1页
大学_数电仿真实验报告_调查报告_表格模板_实用文档.docx_第2页
大学_数电仿真实验报告_调查报告_表格模板_实用文档.docx_第3页
大学_数电仿真实验报告_调查报告_表格模板_实用文档.docx_第4页
大学_数电仿真实验报告_调查报告_表格模板_实用文档.docx_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一 1位全加器的设计一、 实验目的1. 熟悉QUARTUSII软件的使用;2. 熟悉实验箱的使用;3. 掌握利用层次结构描述法设计电路。二、 实验原理及说明由数字电路知识可知,一位全加器可由两个一位半加器与一个或门构成,其原理图如图1所示。该设计利用层次结构描述法,首先设计半加器电路,将其打包为半加器模块;然后在顶层调用半加器模块组成全加器电路;最后将全加器电路编译下载到实验箱,其中ain,bin,cin信号可采用实验箱上SW0,SW1,SW2键作为输入,并将输入的信号连接到红色LED管LEDR0,LEDR1,LEDR2上便于观察,sum,cout信号采用绿色发光二极管LEDG0,LEDG1来显示。图1.1 全加器原理图三、 实验步骤1. 在QUARTUSII软件下创建一工程,工程名为full_adder,芯片名为EP2C35F672C6 注意工程路径放到指定的数据文件夹,不可放到软件安装目录中;2. 新建Verilog语言文件,输入如下半加器Verilog语言源程序; module half_adder(a,b,s,co);input a,b;output s,co; wire s,co;assign co=a & b;assign s=a b;endmodule3. 保存半加器程序为half_adder.v,进行功能仿真、时序仿真,验证设计的正确性。4. 选择菜单FileCreate/UpdateCreate Symbol Files for current file,创建半加器模块。5. 新建一原理图文件,在原理图中调用半加器、或门模块和输入,输出引脚,按照图1所示连接电路。并将输入ain,bin,cin连接到FPGA的输出端,便于观察。完成后另保存full_adder。6. 对设计进行全编译,如出现错误请按照错误提示进行修改。7. 分别进行功能与时序仿真,验证全加器的逻辑功能。8. 锁定引脚采用JATG方式进行下载,通过SW0,SW1,SW2输入,观察的LEDR0,LEDR1,LEDR2,LEDG0,LEDG1亮灭验证全加器的逻辑功能。4、 实验结果与分析 1、半加器仿真结果 半加器所加波形: 时间仿真波形: 功能仿真波形: 2、全加器仿真结果 全加器所加波形: 时间仿真波形: 功能仿真波形:6、 总结这门实验对我们来说是全新的,QUARTUSII软件也是新的,不过好在这次实验有详细的步骤给我们作参考,而老师也详细讲述了每个步骤执行的意义,不会的问题得到了解决,让我们学习软件有了很大的动力。实验二 四位全加器的设计一、实验目的1进一步加深理解全加器的工作原理及电路组成,加深对EDA技术的掌握。2熟悉利用Quartus 的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个四位全加器的设计把握原理图输入方式设计的详细流程。二、实验内容 实验内容1:按照书本4.5.1节完成半加器和1位全加器的设计,包括用原理图输入,编译,综合,适配,仿真,实验板上的硬件测试,并将此全加器电路设置成一个元件符号入库。 实验内容2:建立一个更高层次的原理图,利用以上获得的1位全加器构成4位全加器,并完成编译,综合,适配,仿真和硬件测试。三、实验仪器 1.计算器及操作系统 2.Quartus II软件四、实验原理一个4位全加器可以由4个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。 1、半加器描述根据半加器真值表可以画出半加器的电路图。absoCo0000011010101101表1半加器h_adder真值表图1 半加器h_adder电路图2、1位全加器描述一位全加器可以由两个半加器和一个或门连接而成,因而可以根据半加器的电路原理图或真值表写出1位全加器的VHDL描述。图2 1位全加器电路图3、4位全加器设计描述4位全加器可以看做四个1位全加器级联而成,首先采用基本逻辑门设计一位全加器,而后通过多个1位全加器级联实现4位全加器。其中,其中cin表示输入进位位,cout表示输出进位位,输入A和B分别表示加数和被加数。S为输出和,其功能可用布尔代数式表示为:S=A+B+Ci首先根据一位全加器的布尔代数式应用基本逻辑门设计一位全加器,而后仿真验证一位全加器设计,准确无误后生成元件,供4位全加器设计用。将4个1位全加器级联构成四位全加器。五、实验步骤1、为本项工程设计建立文件夹 :文件夹取名为adder,路径为d:adder。2、建立原理图文件工程和仿真 原理图编辑输入流程如下:1) 打开原理图编辑窗。打开Quartus,选菜单Filenew,选择原理图文件编辑输入项Block Diagram/Schematic File,按OK键。2) 建立一个初始化原理图。在编辑窗口点击右键,在弹出菜单中选择输入元件项InsertSymbol,将元件调入原理图编辑窗口中3) 原理图文件存盘。选择菜单FileSave As,将此原理图存于刚才建立的目录d:adder中,取名为h_adder.bdf。4) 建立原理图文件为顶层设计工程。然后将此文件h_adder.bdf设定为工程。5) 绘制半加器原理图。将元件放入原理图编辑窗口,按图1接好电路。6) 仿真测试半加器。全程编译后,打开波形编辑器。选择Filenew命令,在New窗口中选择Vector Waveform File选项。设置仿真时间区域,编辑输入波形,仿真器参数设置,启动仿真器,观察仿真结果。3、将设计项目(一位半加器)设置成可调用的元件为了构成全加器的顶层设计,必须将以上设计的半加器h_adder.bdf设置成课调用的底层元件。在半加器原理图文件处于打开的情况下,选择菜单FileCreate/UpdateCreate Symbol Files for Current File,即可将当前电路图变成一个元件符号存盘,以便在高层次设计中调用。图3 半加器示意图4、设计全加器顶层文件 为了建立全加器顶层文件,必须再打开一个原理图编辑窗口,方法同前。1) 选择菜单FilenewBlock Diagram/Schematic File,将其设置成新的工程,命名为f_adder.bdf。2) 在打开的原理图编辑窗口中,双击鼠标,选择Project下先前生成的元件h_adder和若干元器件,按图2连接好一位全加器电路图。3) 仿真测试全加器。全程编译后,打开波形编辑器。选择Filenew命令,在New窗口中选择Vector Waveform File选项。设置仿真时间区域,编辑输入波形,仿真器参数设置,启动仿真器,观察仿真结果。5、将设计项目(一位全加器)设置成可调用的元件为了构成4位全加器的顶层设计,必须将以上设计的全加器f_adder.bdf设置成课调用的底层元件。在全加器原理图文件处于打开的情况下,选择菜单FileCreate/UpdateCreate Symbol Files for Current File,即可将当前电路图变成一个元件符号存盘,以便在高层次设计中调用。图4 一位全加器示意图6、四位全加器设计 1.四位全加器原理图如图5所示。图5 四位全加器电路图六、实验结果与分析 1.半加器仿真波形图6 半加器仿真波形分析可得,通过二输入与门,非门,或门,输出的so为两者之和,c0为进位。仿真结果与半加器真值表表1相同,半加器设计成功。2.一位全加器的仿真波形图图7 一位全加器的RTL图图8 一位全加器的仿真波形图仿真结果如图,1位全加器设计成功。3.四位全加器仿真波形从波形可以得出,输入输出满足表达式S=A+B+CI,S15时进位位置1,设计电路功能达到设计要求。4位全加器设计成功。图9 四位全加器仿真波形实验三 三输入与门、三输入或门一、实验目的1、理解简单组合电路设计方法。2、掌握基本门电路的应用。二、实验原理三输入与门、三输入或门的真值表略。输出分别为: out=a&b&c; out=abc;三、实验连线1、将EP2C5适配板左下角的JTAG用十芯排线和万用下载区左下角的SOPC JTAG 口连接起来,万用下载区右下角的电源开关拨到 SOPC下载的一边2、请将JPLED1短路帽右插,JPLED的短路帽全部上插。3、请将JP103的短路帽全部插上。四、实验步骤按照步骤三正确连线,完成项目的建立,文件的命名,文件的编辑,语法检查,引脚分配,编译,下载。引脚锁定见图: 图4-1五、实验代码三输入与门参考代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY triple_input ISPORT (A :IN STD_LOGIC; B :IN STD_LOGIC; C :IN STD_LOGIC; OUTA :OUT STD_LOGIC );END triple_input;ARCHITECTURE ADO OF triple_input IS BEGIN OUTA= A AND B AND C; END ADO;波形如下: 图5-1三输入或门参考代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY triple_input ISPORT (A :IN STD_LOGIC; B :IN STD_LOGIC; C :IN STD_LOGIC; OUTA :OUT STD_LOGIC );END triple_input;ARCHITECTURE ADO OF triple_input IS BEGIN OUTA= A OR B OR C; END ADO;波形如下: 图5-2六、实验现象 对应真值表,以开关SW1,SW2,SW3 作为三输入与门或者三输入或门输入信号对应a,b,c,以D101为输出信号,当结果为0时彩色LED灯熄灭,当结果1时彩灯点亮。调试ok的EP2C5文件在triple_input_and文件夹中,可以直接调用。四、 三输入与门: out=a&b&c 根据这个逻辑表达式,观察到,只有SW1SW2SW3开关都开时,灯亮。其他情况,灯都不亮。五、 三输入或门:out=abc 根据这个逻辑表达式,观察到,只有SW1SW2SW3开关任一一个开时,灯亮。开关都不开时,灯都不亮。 实验四 8-3优先编码器一、实验目的与要求:1、通过常见基本组合逻辑电路的设计,熟悉EDA设计流程。2、熟悉文本输入及仿真步骤。3、掌握VHDL设计实体的基本结构及文字规则。4、掌握组合逻辑电路的静态测试方法。5、理解硬件描述语言和具体电路的映射关系。二、实验步骤与内容:1、创建工程。2、新建文件夹。3、输入正确的源程序,保存,编译。4、波形仿真,分配引脚,编译。5、下载到试验箱,进行功能验证。备注:实验源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ENCODER ISPORT( D:IN STD_LOGIC_VECTOR(0 TO 7); A:OUT STD_LOGIC_VECTOR(0 TO 2) );END ;ARCHITECTURE XIANI OF ENCODER ISBEGINPROCESS(D)BEGIN IF (D(7)=0)THEN A=111; ELSIF (D(6)=0)THEN A=110; ELSIF (D(5)=0)THEN A=101; ELSIF (D(4)=0)THEN A=100; ELSIF (D(3)=0)THEN A=011; ELSIF (D(2)=0)THEN A=010; ELSIF (D(1)=0)THEN A=001; ELSIF (D(0)=0)THEN A=000; ELSE A=ZZZ; END IF;END PROCESS;END;实验仿真波形截图实验五 3-8译码器实验一、实验目的 1、掌握MAX+PlusII软件的基本操作与应用。 2、会使用VHDL语言编写简单的程序。 3、了解可编程器件MAX7000S器件的设计全过程,并能处理设计过程出现的简单问题。二、实验器材 硬件:MAX+PlusII实验开发板(芯片是EPM7128SLC84-15,包括电源线,并行下载电缆),计算机一台。 软件:安装Max+plusII 10.2 软件并安装license。对于WindowsNT/2000/XP,还需要安装下载电缆的驱动程序。三、实验步骤:MAX+PlusII支持多种设计输入方法,如原理图输入、硬件描述语言(HDL)输入、波形图输入、底层输入和层次输入等,本实验采取的是硬件描述语言输入方法,使用VHDL语言。(一)VHDL程序输入:1、软件的启动:单击“start”进入“程序”选中“Max+PlusII 10.2 BASELINE”,打开“”Max+plusII软件。2、启动Max+PlusIIText Editor菜单,弹出VHDL语言输入窗口,将已经编写好的3-8译码器的程序写入。程序语言如下:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;ENTITY decoder ISPORT(inp: IN std_logic_vector(2 downto 0);outp: OUT bit_vector(7 downto 0);END decoder;ARCHITECTURE a OF decoder ISBEGIN outp(0)=1 when inp=000else0; outp(1)=1 when inp=001else0; outp(2)=1 when inp=010else0; outp(3)=1 when inp=011else0; outp(4)=1 when inp=100else0; outp(5)=1 when inp=101else0; outp(6)=1 when inp=110else0; outp(7)=1 when inp=111else0; END a;(二)设置管脚:将输入inp2、inp1、inp0设置到三个按键开关上,对应管脚分别是56、57、58输出outp7、outp6 outp0设置到八个LED灯上,对应管脚分别是30、31、33、34、35、36、37、39。按下面步骤设置:1、在assignDevice中选择“EPM7128SLC84-15”芯片;2、用Assign-Pin/Location/Chip项,出现对话框;3、在对话框中,Node-Name输入结点名,例如输入“inp2”,在pin项输入要写入的引脚号,即“56”,在pintype中选择input或output等,按“add”键,把上面的脚位定义添加进去;4、重复以上步骤,完成其余管脚的设置。(三)程序的编译 Max+Plus处理一个设计时compiler会在设计文件中读取信息并产生编程文件(.pof),和仿真文件(.cnf),给出信息(错误、警告等),可以利用它自动打开有错误的文件,并以高亮度方式显示错误位置,告之用户以便修正。单击编译按钮进行编译,如果程序有错误,将会提示,根据提示进行改正,直至没有错误,编译。(四)模拟仿真一个项目的设计输入,编译后不一定完全符合要求,因为只能保证为项目创建一个编程文件,而不能保证按照期望那样运行,因此就必须模拟防真或在线防真,Max+Plus软件提供了模拟防真,在模拟防真个过程中,需要给Max+Plus模拟器提供输入变量,模拟器将利用这些输入信号来产生输出信号。具体的仿真文件如下图: (五)器件下载编程与硬件实现:首先将硬件连接好,外接+5V电源,启动Max+PlusIIProgram菜单;接着在Option-hardware setup窗口中hardware type选项中选择ByteBlaster,在parallel port项选择正确的并口;然后,单击Program按钮,进行下载编程,直至完成下载,最后按OK退出。至此,已经完成了可编程器件的从VHDL语言编写到下载实现的整个过程。四、实验结果用三位拨码开关代表译码器的输入端inp2、inp1、inp0,将之分别与EPM7128SLC84-15芯片的相应管脚相连;用LED灯来表示译码器的输出,将outp7、 outp0对应的管脚分别与8只LED灯相连。试验结果如下:其中按键“未按”代表“1”,按健“按下”代表“0”;灯“亮”代表输出为“0”,灯“灭”代表输出为“1”。inp2inp1inp0outp7outp6outp5outp4outp3outp2outp1outp0111灭亮亮亮亮亮亮亮110亮灭亮亮亮亮亮亮101亮亮灭亮亮亮亮亮100亮亮亮灭亮亮亮亮011亮亮亮亮灭亮亮亮010亮亮亮亮亮灭亮亮001亮亮亮亮亮亮灭亮000亮亮亮亮亮亮亮灭试验结果和理论相一致,实验成功。五、实验小结通过对本实验的学习,对MaxplusII软件已经有了一定的认识,同时对VHDL语言编程器整个设计过程也有了一个完整的概念和思路。 实验中需注意的问题:1. 在文件名必须与VHDL文件中的设计实体名保持一致。2. 在编译前必须把文件保存成扩展名为.vhd格式。3. 在设置引脚时,一定要看电路板,以及电路图,找对各个输入输出接口对应的芯片引脚。实验六 四位十进制频率计实验说明:本设计采用同步计数的方法,很好地解决了异步频率计逢9进一的缺陷,(比如1096,会测成1196,109会测成119)实验目的 1、 熟悉 EDA 软件(QuartusII)的硬件描述语言输入设计方法; 2、掌握 VHDL 语言的层次化设计方法和仿真分析方法; 3、了解功能仿真、时序仿真和时序参数分析的意义。一、 实验仪器计算机一台;Quartus 软件;FPGA开发板二、 实验内容 1、 用 VHDL 语言完成4 位十进制计数器、4 位锁存器、测频控制器的设计,包括编 译、综合、仿真;* 2、采用层次化设计的方法,用VHDL 语言的元件例化语句写出4 位十进制频率计的 顶层文件,并分别给出其测频功能和时序仿真分析波形图,并加以分析;* 3、用 EDA 实验箱进行硬件验证,并分析测量结果;建议硬件测试实验电路采用NO.0 电路结构,待测信号F_IN 接clock0;测频控制时钟CLK 接clock2;* 4、在 2 基础上将其扩展为8 位十进制频率计,或带译码输出的4 位十进制频率计。实验测试电路采用NO.0四实验现象每在F_IN键入一个频率,通过频率计可测出该频率大小,并在数码管上显示相应的数值。测频控制器功能仿真图测频控制器时序仿真图原理说明1 测频控制器的使能信号(起名为TSTEN),它具有产生一个1秒脉冲宽度且周期为2秒的信号,其功能是对频率计的每一个计数器的使能端进行同步控制,当其为高电平时允许计数,低电平时停止计数,并保持所计数; 2 在停止计数期间,首先要能产生一个锁存信号,用其上跳沿,将前一秒的计数值锁存进16位锁存器中,并由外部的七段译码器输出并稳定显示(设置锁存器的好处,在于可以消除周期性清零信号带来的不断闪烁);3 信号锁存后,必须有一清零信号对所有计数器进行清零,为下一次计数做准备 4 每一个计数器CNT10有4位输出(00001001分别表示十进制中的09),因此需要用四片CNT10。四片CNT10应串接起来,当前一片CNT10产生进位信号后,由CARRY_OUT输出跳变高电平,引入下一片CNT10(也即输入时钟信号CLK)。为解决逢9进1的缺陷,本例各计数器采用同步计数。各计数器的进位输出口与自己使能端相与作为下一个高位计数器的使能端,本例考虑的电路的简洁,已将与门综合到各个计数器中,各计数器sout为与门输出端口,a位与门一个输入口。4位十进制频率计功能仿真图4位十进制频率计时序仿真图五 附:VHDL代码底层文件一:测频控制器(test_ctl)Library ieee;Use ieee.std_logic_unsigned.all;Use ieee.std_logic_1164.all;Entity test_ctl isPort ( clkk: in std_logic; test_en: out std_logic; load: out std_logic; clr_cnt: out std_logic);end test_ctl;architecture behav of test_ctl issignal div2clk :std_logic;begin process(clkk) begin if clkkevent and clkk=1 thendiv2clk=not div2clk; end if;end process;process(clkk,div2clk)beginif clkk=0 and div2clk=0 then clr_cnt=1;else clr_cnt=0;end if;end process;load=not div2clk;test_en0); elsif clkevent and clk=1 then if ena=1 then if cqi0); end if; end if;end if;if cqi=9 then cout=1;else cout=0;end if;cq=cqi;sout=a and cout;end process;end behav;底层文件三:32位锁存器(reg32)Library ieee;Use ieee.std_logic_1164.all;Entity reg32 isPort (load: in std_logic; din: in std_logic_vector(31 downto 0); dout: out std_logic_vector(31 downto 0);end reg32;architecture behav of reg32 isbegin process(load,din) beginif loadevent and load=1 thendoutf_in,clr=clr1,ena=ena1,cq=cq1,a=ena1,sout=sout1); u2 : cn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论