eda实验报告2
EDA实验二实验报告

实验二差动放大电路的设计与仿真一、实验目的1、掌握对电压放大倍数有要求的带恒流源的差动放大电路的设计方法;2、掌握带恒流源的差动放大电路AVD 、AVD1、AVC、AVC1的测试方法二、实验要求1、设计一个长尾式差动放大电路,给定阻值为5.1kΩ的射极公共电阻,要求空载时的AVD 大于50。
2、测试电路两个三极管的静态工作点值和以及在该静态工作点下的β、rbe、rce值。
3、空载下给电路分别输入差模和共模交流小信号,分别测试电路的双端输出的差模增益AVD、单端输出的差模增益AVD1、双端输出的共模增益AVC 以及单端输出的共模增益AVC1值。
三、实验步骤(一)差动放大电路原理图(二)测试电路每个三极管的静态工作点值和β、r be 、r ce值。
1、β值的测量A Q1与Q2Ib1=9.01531uA Ib2=9.01531uA Ib3=13.73352uA Ic1=1.05261mA Ic2=1.05261mA Ic3=2.12317mA β1=β2=Ic/Ib=1052.61/9.01561=116.8β3=Ic/Ib=2123.17/13.73352=154.62、rbe的测量Rbe1=dx/dy=1/248.5878u=4.02kΩRbe3=dx/dy=1/248.5878=4.022kΩR0=Rbe3*(1+β2*R5/(Rbe2+R4//(R5+R3)))=121.0622kΩ3、rce值的测量Rce1=dx/dy=1/92.0630k=10.86kRce3=1/148.1688k=6.749k(三)测量AVD 、AVD1、AVC、AVC11、双端差模增益AVD实验值AVD =(Vod1-Vod2)/(Vid1-Vid2)=1.063/0.02=53.15理论值AVD=- [Rc//(RL/2)]/rbe=59.29 E=(59.29-53.15)/59.29=10%2、单端差模增益A VD1实验值:A VD1=V od1/(V id1-V id2)=(591.418-(-129.51))/20=36.0464 理论值A VD =-0.5 [Rc//(RL/2)]/rbe=29.645 E=(36.0464-29.645)/36.0460=17.7%3、双端共模增益A VC实验值: A VC =0.1212pv 理论值: A VC =04、单端共模增益AVC1实验值:A VC1=V oc1/V ic1=(591.41783-591.456722)/10=0.00388 理论值:A VC1=-[β(Rc//RL)]/[rbe+(β+1)2REE]=0.0041 E=(0.0041-0.00388)/0.00388=5.67%四、实验小结本次试验较上次实验来说难度有所降低,主要原因是对软件的使用变得熟练了,但是实验效果,以及实验应用方面却是极广,通过本次实验,我认识到差模输入时电压放大倍数较大,而共模输入时电压放大倍数极小。
南京理工大学EDA(2)实验报告

南京理⼯⼤学EDA(2)实验报告南京理⼯⼤学EDA(2)实验报告--------多功能数字钟学⽣姓名:林晓峰学号:912104220143 专业:通信⼯程指导教师:2014年12⽉10⽇摘要本次实验利⽤QuartusII7.0软件设计了⼀个具有24⼩时计时、保持、清零、快速校时校分、整点报时、动态显⽰等功能的的多功能数字钟。
并利⽤QuartusII7.0软件对电路进⾏了详细的仿真,同时通过SMART SOPC实验箱对电路的实验结果进⾏验证。
报告分析了整个电路的⼯作原理,还分别说明了设计各⼦模块的⽅案和编辑、仿真、并利⽤波形图验证各⼦模块的过程。
并且介绍了如何将各⼦模块联系起来,合并为总电路。
最后对实验过程中产⽣的问题提出⾃⼰的解决⽅法。
并叙述了本次实验的实验感受与收获。
关键词:QuartusII7.0 多功能数字钟保持清零整点报时校时校分动态显⽰ SMART SOPCAbstractThis experiment uses the QuartusII7.0 software todesign one to have 24 hours time, the maintenance, the reset,the fast timing school minute,the integral point reportstime and so on digital clocks.And using the QuartusII software realizes the multi-purpose digital clock simulation. Through the SmartSOPC experiment box, I confirm the result of this experiment.The report analyzes the electric circuit principle of work,and also illustrates the design of each module and editing, simulation, and the process of using the waveformto testing each Sub module. Meanwhile,it describes how the modules together, combined for a total circuit. Finally the experimental problems arising in the process of presenttheir solutions. And describes the experience and resultof this experiment.Keywords:QuartusII7.0 Digital clock maintenancereset time alarm change minute and hour quickly dynamic display SMART SOPC⽬录封⾯ (1)摘要 (2)Abstract (3)⽬录 (4)1.设计要求 (5)2.实验原理 (6)3.模块电路设计 (7)3.1 脉冲发⽣电路 (7)3.2计数器 (10)3.3计时校正电路 (13)3.4整点报时电路 (17)3.5译码显⽰电路 (18)3.6附加电路 (19)4. 总电路图 (20)5.电路下载 (20)6.实验感想和收获 (21)6.1遇到的问题与解决⽅案 (22)6.2收获与感受 (23)6.3期望及要求 (23)7. 参考⽂献 (23)1.设计要求本次EDA设计利⽤Quartus II7.0软件设计⼀个多功能数字钟,并下载到Smart SOPC实验系统中进⾏验证。
EDA 实验2简单分频时序逻辑电路设计 实验报告

时序电路设计实验目的:1.掌握条件语句在简单时序模块设计中的使用。
2.学习在Verilog模块中应用计数器。
实验环境:Windows 7、MAX+PlusⅡ10等。
实验内容:1.模为60的8421BCD码加法计数器的文本设计及仿真。
2.BCD码—七段数码管显示译码器的文本设计及仿真。
3.用For语句设计和仿真七人投票表决器。
4.1/20分频器的文本设计及仿真。
实验过程:一、模为60的8421BCD码加法计数器的文本设计及仿真:(1)新建文本:选择菜单File下的New,出现如图5.1所示的对话框,在框中选中“Text Editor file”,按“OK”按钮,即选中了文本编辑方式。
图5.1 新建文本(2)另存为Verilog编辑文件,命名为“count60.v”如图5.2所示。
(3)在编辑窗口中输入程序,如图5.3所示。
图5.2 另存为.V编辑文件图5.4 设置当前仿真的文本设计图5.3 模为60的8421BCD码加法计数器的设计代码(4)设置当前文本:在MAX+PLUS II中,在编译一个项目前,必须确定一个设计文件作为当前项目。
按下列步骤确定项目名:在File菜单中选择Project 中的Name选项,将出现Project Name 对话框:在Files 框内,选择当前的设计文件。
选择“OK”。
如图5.4所示。
(5)打开编译器窗口:在MAX—plusⅡ菜单内选择Compiler 项,即出现如图5.5的编译器窗口。
图5.5 编译器窗口选择Start即可开始编译,MAX+PLUS II编译器将检查项目是否有错,并对项目进行逻辑综合,然后配置到一个Altera 器件中,同时将产生报告文件、编程文件和用于时间仿真用的输出文件。
(6)建立波形编辑文件:选择菜单File下的New选项,在出现的New对话框中选择“Waveform Editor File”,单击OK后将出现波形编辑器子窗口。
(7)仿真节点插入:选择菜单Node下的Enter Nodes from SNF选项,出现如图5.6所示的选择信号结点对话框。
EDA实验报告

EDA实验报告EDA(VHDL编程)实验报告一、引言EDA (Electronic Design Automation) 是一种用于电子设计和验证的自动化工具。
VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述和建模数字系统。
本实验旨在使用VHDL编程并使用EDA工具进行设计和验证。
二、实验目的1.理解并熟悉VHDL编程2.学会使用EDA工具进行设计和验证3.实践数字系统的建模和仿真三、实验过程1.VHDL编程根据实验要求,我们使用VHDL编程来实现一个4位2选1多路器。
首先,我们定义输入端口和输出端口,并声明所需的信号和变量。
然后,我们编写组合逻辑和时序逻辑以实现所需的功能。
最后,我们将实例化该多路器并指定其输入和输出端口。
2.EDA工具设计和验证我们选择了 Xilinx ISE Design Suite 作为我们的 EDA 工具。
首先,我们创建一个新的项目并选择相应的 FPGA 芯片。
然后,我们添加我们的VHDL 设计文件到项目中,并进行综合、布局和路由。
最后,我们使用仿真工具验证我们的设计。
四、实验结果经过实验,我们成功地编写并实例化了一个4位2选1多路器。
我们使用 Xilinx ISE Design Suite 进行综合、布局和路由,并成功验证了我们的设计。
五、实验总结通过本实验,我们掌握了VHDL编程和EDA工具的使用。
我们学会了使用VHDL描述数字系统,并使用EDA工具进行设计和验证。
这些技能对于电子设计和验证非常重要,并将有助于我们更好地理解和应用数字系统的原理和方法。
在实验过程中,我们也遇到了一些困难和挑战。
例如,我们可能需要更深入地了解VHDL编程的语法和方法,以及如何使用EDA工具的高级功能。
此外,我们还需要更多的实践来提高我们的设计和仿真技能。
总之,本实验有助于我们深入学习和理解数字系统的设计和验证。
通过实践和使用EDA工具,我们能够更好地应用所学知识,提高我们的设计和验证能力。
EDA实验报告2_2位十进制频率计

姓名
学号
专业年级
电子信息工程
实验题目
2位十进制数字频率计的设计
实验目的
1.熟悉原理图输入法中74系列等宏功能元件的试用方法,掌握复杂的原理图层次化设计技术和数字系统设计方法
2.完成2位十进制频率计的设计,学会利用实验系统板上的FPGAຫໍສະໝຸດ 证较复杂设计项目的方法实验原理
该频率计由三个模块构成
1.2位十进制计数器count_8.bdf的时序仿真波形中,q[3..0]由0递增到9,进位输出给高位q[7..4],待q[7..4]计数到9,cout产生进位信号。
2.10分频器frep.vhdl输出outclk做为测频时序控制电路模块的控制信号输入,产生的count_8的计数使能信号CNT_EN(<= enb)有如下关系CNT_EN = 8Xoutclk。
4.测频时序控制电路模块
按一定的时序产生三个控制信号CNT_EN(<=ENB(count_8))、CLR(<=CLR(count_8))、LOCK(<=CLK(74374)),完成计数、清零、锁存功能。实验板只提供22.1184MHz时钟输入端,因此须再设计一个分频器frep.bdf将F_IN端频率进行10分频,接入ft_ctro.bdf的CLK(测评控制时钟)端。
3.数码管的理论显示值为N = ToutclkXNTCNT_EN/F_IN,其中F_IN为待测频率,NTCNT_EN= 8,Toutclk为十分频后的输出信号outclk的周期。待测频率稳定后,74248译码输出分别为H[6..0] = 16#7F#,L[6..0] = 16#7E#,数码管显示即为80,硬件验证结果与预期相符。
2.用vhdl文本输入法十分频电路frep.vhdl的设计,创建projet,编译仿真,给出时序波形,并形成frep.bsf符号入库。
EDA实验报告xianxi

数字电路EDA可编程逻辑实验报告学院:电子工程学院班级:学号:姓名:西安邮电大学电子工程学院电工电子实验教学部实验二:用原理图输入法设计门电路实验目的:1.进一步掌握PLD芯片的基本使用方法,熟悉EDA软件MAX+plus的操作。
2.学会利用软件仿真和实现用硬件对数字电路的逻辑功能进行验证和分析。
3.学习初步的VHDL程序设计方法。
器材:PC实验内容:实现1、F=a∙b2、F=a b3、F=A⊕B4、F=abc d实验结果:1、F=a∙b源程序:library ieee;use ieee.std_logic_1164.all;entity and2 isport(a,b:in std_logic;y:out std_logic);end;architecture rel_1 of and2 isbeginy<=a and b;end;仿真结果:2、F=a b源程序:library ieee;use ieee.std_logic_1164.all; entity nand2 isport(a,b:in std_logic;y:out std_logic); end;architecture rel_1 of nand2 is beginy<=a nand b;end;仿真结果:3、F=A⊕B源程序:library ieee;use ieee.std_logic_1164.all; entity xor2 isport(a,b:in std_logic;y:out std_logic); end;architecture rel_1 of xor2 is beginy<=a xor b;end;仿真结果:4、F=abc d源程序:library ieee;use ieee.std_logic_1164.all; entity yhf isport(a,b,c,d:in std_logic;F:out std_logic); end;architecture rel_1 of yhf is signal g,h,y:std_logic; beging<=not a and b and c;h<=not d;y<=g or h;F<=y;end;仿真结果:实验小结:本实验为第一次EDA实验,不免有些兴奋和好奇,加之老师讲的比较好,所以基本上没有遇到什么问题。
南京理工大学EDA2实验报告

南京理工大学EDA(二)实验报告学号:姓名:学院:指导老师:时间: 2014年11月30日摘要:本实验通过使用 QuartusⅡ软件,并结合数字逻辑电路的知识设计多功能数字钟,可以实现正常的时、分、秒的计数功能,分别由六个数码管显示计时,可以利用开关实现系统的计时保持、清零和校分、校时、校星期的功能。
同时,该电路系统还可以完成在59'53'', 59'55'', 59'57''低音报时, 59'59''高音报时的基本功能。
在此基础上,本实验还设计了扩展功能,包括星期计时、校星期以及通过开关与门电路切换到秒表计时的功能。
我原本还尝试设计闹钟的功能,但是闹钟的扩展功能还不够完善,目前完成了切换显示部分,但是报时还存在缺陷。
在利用 QuartusⅡ进行相应的设计、仿真、调试后下载到 SmartSOPC 实验系统上验证设计的正确性。
关键词:QuartusII,数字钟,分频,计时显示,保持清零,校分校时校星期,报时,星期计数,秒表Abstract:This experiment is based on QuartusⅡ,with the help of knowledge regarding the digital logic circuits and system design,to design a multifunctional digital clock. The basic function of the multifunctional digital clock is a 24-hour timer, and the exact time can be showed by six led lights. Also we can achieve the functions like time keeping, clearing and time and week adjusting by using the switches. Beyond the basic function, I improved the multifunctional digital clock and it can beep in low frequency at 59'53'', 59'55'', 59'57'' and in high frequency at 59'59''. Based onthis the basic design,I also design extra functions,including week timer ,week-time adusting and the stopwatch which can be exchanged by using the switchs and several circuits of logic and doors.Also I intended to design the alarm clock.,but unfortunately,the extra function of alarm clock is not perfect.Currently,I just have finished the functions containing the parts of exchange and display.But the part of beeping still needs improved.All the designing and simulating work are based on QuartusⅡ. After all the work finished on computer, I downloaded the final circuit to SmartSOPC experiment system to test the accuracy of the design.Key words: QuartusⅡ, digital clock ,reckon by time and display,time keeping and clearing, time adjusting, chiming, week timer,stopwatch目录一、题目简介 (5)二、设计要求 (5)三、方案论证 (5)四、设计原理 (6)1 脉冲发生器 (6)2 计数器设计 (9)3 计时电路、校正电路 (12)4 报时电路 (15)5 译码显示器 (16)五、附加功能 (18)1 星期功能 (18)2 秒表功能 (18)3 倒计时器 (18)4 开关复用 (19)5 切换电路............................................................................................. 错误!未定义书签。
EDA实验报告2

实验题目 实验时间 实验成绩 教师评语:键盘扫描实验 2016 年 10 月 20 日 实验地点 实验性质 主教 1118□验证性 □设计性 □综合性□出勤率好 □实验结果正确一、实验目的□原理正确 □回答问题正确□方案合理 □报告规范熟悉 VHDL 的语法和编译排错,重点掌握组合逻辑中显示译码器的设计。
附加学习键盘 和数码管显示控制。
二、实验内容、原理1.用文本输入法,在键盘显示程序的译码部分,分别用三种语法填写 BCD 到 LED 的译码 器。
三种语法为 When else、With select、Case,建议使用模板。
每一种都需编译通 过提交程序。
2.选一种语法,编译,绑定引脚,下载验证结果。
3.改写程序,将 1-6 的数据固定地显示在 1-6 位数码管上。
编译、下载验证结果。
4.将 F 键功能改为换向键,即可以控制数字滚动显示的方向。
编译、下载验证结果。
数码管动态显示原理框图:三、使用仪器、材料QuartusⅡ软件和 HN—FPGA11 实验箱四、实验步骤5.用文本输入法,在键盘显示程序的译码部分,分别用三种语法填写 BCD 到 LED 的译码 器。
三种语法为 When else、With select、Case,建议使用模板。
每一种都需编译通 过提交程序。
6.选一种语法,编译,绑定引脚,下载验证结果。
7.改写程序,将 1-6 的数据固定地显示在 1-6 位数码管上。
编译、下载验证结果。
8.将 F 键功能改为换向键,即可以控制数字滚动显示的方向。
编译、下载验证结果。
一种推荐的适配卡连线如下表所示: 输 入 对应芯 引 功 能 输 出 对 应 芯 引 入 功 信 号 名 片 端子 入 端 子 信 号 名 片 端 子 端 子 能 名 名 名 名 CLK1 PIN_A20 10HZ 时钟 LED_SEG[2] PIN_C1 C 段选 LED_SEG[3] PIN_B1 D 段选 LED_SEG[4] PIN_C3 E 段选 LED_BIT[0] PIN_G4 BIT1 位选 1 LED_SEG[5] PIN_E5 F 段选 LED_BIT[1] PIN_E3 BIT2 位选 2 LED_SEG[6] PIN_B3 G 段选 LED_BIT[2] PIN_D2 BIT3 位选 3 LED_SEG[7] PIN_B4 H 段选 LED_BIT[3] PIN_C2 BIT4 位选 4 KEYCOL[0] PIN_A16 C1 键盘列 LED_BIT[4] PIN_B2 BIT5 位选 5 KEYCOL[1] PIN_C17 C2 LED_BIT[5] PIN_C4 BIT6 位选 6 KEYCOL[2] PIN_A17 C3 LED_BIT[6] PIN_E6 BIT7 位选 7 KEYCOL[3] PIN_A18 C4 LED_BIT[7] PIN_A3 BIT8 位选 8 KEYROW[1] PIN_A7 R1 键盘 行 LED_SEG[0] PIN_G3 A 段选 KEYROW[2] PIN_A8 R2 LED_SEG[1] PIN_E4 B 段选 KEYROW[3] PIN_A9 R3 KEYROW[4] PIN_A10 R4五、实验过程原始记录(数据、图表、计算等)1. (1)case 语法: PROCESS(NUM) BEGIN CASE NUM IS WHEN "0000"=>SEG<="0111111"; WHEN "0001"=>SEG<="0000110"; WHEN "0010"=>SEG<="1011011"; WHEN "0011"=>SEG<="1001111"; WHEN "0100"=>SEG<="1100110"; WHEN "0101"=>SEG<="1101101"; WHEN "0110"=>SEG<="1111101"; WHEN "0111"=>SEG<="0000111"; WHEN "1000"=>SEG<="1111111"; WHEN "1001"=>SEG<="1101111"; WHEN OTHERS=>SEG<="1000000"; END CASE; END PROCESS; (2) With select 语法: WITH NUM SELECT SEG<="0111111" WHEN "0000" , "0000110" WHEN "0001" , "1011011" WHEN "0010" , "1001111" WHEN "0011" , "1100110" WHEN "0100" , "1101101" WHEN "0101" , "1111101" WHEN "0110" , "0000111" WHEN "0111" , "1111111" WHEN "1000" , "1101111" WHEN "1001" , "1000000" WHEN OTHERS; (3) When else 语法: SEG<="0111111" WHEN NUM="0000" ELSE "0000110" WHEN NUM="0001" ELSE "1011011" WHEN NUM="0010" ELSE "1001111" WHEN NUM="0011" ELSE "1100110" WHEN NUM="0100" ELSE "1101101" WHEN NUM="0101" ELSE "1111101" WHEN NUM="0110" ELSE "0000111" WHEN NUM="0111" ELSE "1111111" WHEN NUM="1000" ELSE"1101111" WHEN NUM="1111" ELSE "1000000"; 2.显示学号 20142723 --可以删掉键盘扫描部分,因为不需要键盘扫描 --显示模块 BIT <= COUNT(4 DOWNTO 2); --位选扫描信号 LED_BIT <= "11111110" WHEN BIT = 0 ELSE "11111101" WHEN BIT = 1 ELSE "11111011" WHEN BIT = 2 ELSE "11110111" WHEN BIT = 3 ELSE "11101111" WHEN BIT = 4 ELSE "11011111" WHEN BIT = 5 ELSE "10111111" WHEN BIT = 6 ELSE "01111111" WHEN BIT = 7 ELSE "11111111"; SEG <= "1001111" WHEN BIT = 0 ELSE --3 "1011011" WHEN BIT = 1 ELSE --2 "0000111" WHEN BIT = 2 ELSE --7 "1011011" WHEN BIT = 3 ELSE --2 "1100110" WHEN BIT = 4 ELSE --4 "0000110" WHEN BIT = 5 ELSE --1 "0111111" WHEN BIT = 6 ELSE --0 "1011011" WHEN BIT = 7 ELSE --2 "0000000"; LED_SEG(6 DOWNTO 0)<=SEG; LED_SEG(7) <= '0'; --显示模块--位选扫描信号译码--位选扫描信号译码3. F 键功能改为换向键,控制数字滚动显示的方向: architecture KEYSCAN_ARCH of KEYSCAN is SIGNAL C : STD_LOGIC; PROCESS (count0,COUNT,KEYROW1,KEYROW2,KEYROW3,KEYROW4) BEGIN IF COUNT0'event and (COUNT0 = '1')THEN IF (KEYROW1 = '0') and (COUNT(1) = '0') THEN NUM(3 DOWNTO 2)<= "00"; NUM(1 DOWNTO 0) <= COUNT(3 DOWNTO 2); ELSIF (KEYROW2 = '0') and (COUNT(1) = '0') THEN NUM(3 DOWNTO 2)<= "01"; NUM(1 DOWNTO 0) <= COUNT(3 DOWNTO 2); ELSIF (KEYROW3 = '0') and (COUNT(1) = '0') THEN NUM(3 DOWNTO 2)<= "10";NUM(1 DOWNTO 0) <= COUNT(3 DOWNTO 2); ELSIF (KEYROW4 = '0') and (COUNT(1) = '0') THEN NUM(3 DOWNTO 2)<= "11"; NUM(1 DOWNTO 0) <= COUNT(3 DOWNTO 2); if (NUM(3 downto 2)="11") then if C ='1' then C<='0'; else C<='1'; end if; end if; END IF; END IF; BIT <=COUNT(4 DOWNTO 2); LED_BIT <= "11111110" WHEN BIT = 0 and C='0' ELSE "01111111" WHEN BIT = 0 and C='1' ELSE "11111101" WHEN BIT = 1 and C='0'ELSE "10111111" WHEN BIT = 1 and C='1'ELSE "11111011" WHEN BIT = 2 and C='0'ELSE "11011111" WHEN BIT = 2 and C='1' ELSE "11110111" WHEN BIT = 3 and C='0'ELSE "11101111" WHEN BIT = 3 and C='1'ELSE "11101111" WHEN BIT = 4 and C='0'ELSE "11110111" WHEN BIT = 4 and C='1' ELSE "11011111" WHEN BIT = 5 and C='0'ELSE "11111011" WHEN BIT = 5 and C='1'ELSE "10111111" WHEN BIT = 6 and C='0'ELSE "11111101" WHEN BIT = 6 and C='1'ELSE "01111111" WHEN BIT = 7 and C='0'ELSE "11111110" WHEN BIT = 7 and C='1'ELSE "11111111"; SEG<= "0111111" WHEN NUM = 0 ELSE "0000110" WHEN NUM = 1 ELSE "1011011" WHEN NUM = 2 ELSE "1001111" WHEN NUM = 3 ELSE "1100110" WHEN NUM = 4 ELSE "1101101" WHEN NUM = 5 ELSE "1111101" WHEN NUM = 6 ELSE "0000111" WHEN NUM = 7 ELSE "1111111" WHEN NUM = 8 ELSE "1101111" WHEN NUM = 9 ELSE "1000000" when NUM ="1010"ELSE "1000000" when NUM ="1011"ELSE "1000000" when NUM ="1100"ELSE"1000000" when NUM ="1101"ELSE "1000000" when NUM ="1110"; LED_SEG(6 DOWNTO 0)<=SEG; LED_SEG(7) <= '0'; end KEYSCAN_ARCH;六、实验结果及分析总结总结分析: (1) 在第一问中要求用文本输入法,在键盘显示程序的译码部分,分别用三种语法 When else、With select、Case 编写程序,在编写 When else、With select、运行 中一直有错误提示,后来看书发现我把这两个程序都放在了 process()中了,而没 有注意到这两个是并行语句,不能放在进程中,而 case 语句是顺序语句,可以在进 程中运行存在。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二多路选择器的设计
一、实验目的
1、进一步熟悉QUARTUSII软件的使用方法和VHDL输入的全过程。
2、进一步掌握实验系统的使用。
二、实验原理
四选一多路选择器的原理如下图及下表,由Sl,S0来选择d0 ,dl ,d2 ,d3的信号,并使其能在Q上输出。
三、实验内容
1、用VHDL语言的不同语句分别描述任务选择器,并通过编译仿真比较不同语句描述的
区别。
2、通过仿真下载并通过硬件验证实验结果。
四、实验步骤
1、打开QUARTUSII软件,新建一个工程。
2、建完工程之后,再新建一个VHDL File。
新建一个VHDL文件的过程如下:
1)选择QUARTUSII软件中的File>New命令,出现New对话框。
如图2-2所示。
图2-1 新建设计文件选择窗口
2)在New对话框(图2-1)中选择Device Design Files页下的VHDL File,点击OK按钮,打开VHDL编辑器对话框,如图2-2所示。
图2-2 VHDL编辑窗口
1、按照实验原理和自己的想法,在VHDL编辑窗口编写VHDL程序,用户可参照光盘中提供的示例程序。
2、编写完VHDL程序后,保存起来。
方法同实验一。
3、对自己编写的VHDL程序进行编译并仿真,对程序的错误进行修改。
4、编译仿真无误后,进行管脚分配,下表是示例程序的管脚分配表。
分配完成后,再进行全编译一次,以使管脚分配生效。
表2-1 端口管脚分配表
5、“模式选择键”:按动该键能使实验板产生12种不同的实验电路结构。
本次实验的模式选择到“6”(红色数码管上显示)。
6、用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。
观察实验结果是否与自己的编程思想一致。
五、实验现象与结果
当设计文件加载到目标器件后,按键按键开关,LED会按照实验原理中的格雷码输入一一对应的亮或者灭。
六、实验报告
1、绘出仿真波形,并作说明。
2、进一步熟悉QUARTUSII软件。
3、将实验原理、设计过程、编译仿真波形和分析结果、硬件测试结果记录下来。
具体的设计流程:
1、编辑和输入设计文件
(1)、新建一个文件夹
如D:\MUX41 ,本工程所有文件将存放在此目录中。
1)输入VHDL源程序
打开QuartusII,选择菜单File->New。
选择Verilog HDL File,输入源程序。
(2)、创建工程
1)选择菜单File->New project Wizard命令,即弹出工程设置对话框。
单击此对话框右侧的“…”进行设置,第一行的D:\MUX41表示工程所在的工作库文件夹,第二行的MUX41表示此项工程的工程名,第三行是当前工程顶层文件的实体名。
2)将设计文件MUX41.v添加入工程中。
点“…”按钮,在弹出的对话框中选择MUX41.v 文件。
单击“Add”按钮。
3)选择目标芯片
也可从主菜单Assignments的下拉菜单中点击 Device目标芯片设置窗口。
4)工具设置,此处不进行设置,点击Next
5)结束设置
列出了此工程相关设置情况,点击Finish按钮,出现project nevigator窗口,显示本工程项目的层次结构和各层次的实体名。
2、全程综合与编译
选择Processing->start compilation,等待一段时间,跳出对话框提示编译成功或有错误,并在信息栏显示错误信息。
3、仿真测试
1)打开波形编辑器
选择File->new,选择vector waveform file。
2)设定仿真时间区域
在Edit->end time,在弹出的窗口time栏处输入50,单位选“us”。
3)波形文件存盘,默认文件名为MUX41.vwf
4)将此工程MUX41的端口信号名选入波形编辑器中
View->utility windows项的Node Finder选项。
点击“list”。
5)将端口信号名拖入波形编辑器中,拖完信号后可以关掉浮动窗口
6)按键盘上“CTRL+W”,显示全部仿真时间区域。
7)编辑输入波形(输入激励信号)
8) 仿真器参数设置设置波形参量
选“Edit/End time”,设置仿真时间总长度为1us;
选“Edit/Grid size”,设置时间周期为50ns。
(两条竖线站之间的时间)
单击View→Fit in Windows,以便在波形编辑窗观察全部仿真时间段。
再按下图编辑Ai 、Bi和C的电平值。
9)启动仿真器。
提示是否保存,选择“是”,仿真成功后选“确定”。
10) 观察仿真结果
按键盘上“CTRL+W”,在全部仿真时间区域内观察波形,并分析波形图显示的逻辑功能是否正确
4、引脚锁定与硬件测试
打开MUX41命名的工程,应选择File的Open Project命令。
选择Assignments->assingnment editor项。
Category栏中选择locations,然后双击TO栏的《new》,选择Node Finder。
在出现的对话框左边框中选择需要锁定的端口信号名,这些信号跳到右栏,单击OK按键后,这些信号名即进入信号编辑栏。
接着在表框中分别键入需要锁定的端口引脚名。
锁定引脚后,必须重新编译,启动Processing->Start Ccomplication,编译完成后可下载配置文件。
5、使用USB编程器下载配置文件
首先安装USB编程器的驱动程序。
选择自己搜索驱动程序。
备注:若没有正确安装驱动程序,USB Blaster 编程器不可选,这时必须到硬件设备管理器中删除打问号的USB驱动程序,重新正确安装。
6、配置文件下载
将编译产生的SOF格式配置文件配置进FPGA中。
在MODE选择JTAG。
编程器选择USB Blaster下载方式。
7、点击“start”将配置文件下载,然后进行硬件测试。
其中输入数据端口为a、b、c、d,s1、s2为控制信号,Y为输出。
令s1s2=“00”时,输出Y=a;
令s1s2=“01”时,输出Yb;
令s1s2=“10”时,输出Y=c;
令s1s2=“11’ 时,输出Y=d;
a
输入 b
数据 c
d
具体程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY mux41a IS
PORT (a,b,c,d,s0,s1:IN STD_LOGIC; --输入信号
y:OUT STD_LOGIC); --输出信号
END ENTITY mux41a;
ARCHITECTURE one OF mux41a IS
SIGNAL S:STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
S<=s0&s1; --并置操作,获得二维矢量数据类型PROCESS(s0,s1,a,b,c,d) --敏感信号
BEGIN
CASE S IS
WHEN"00"=> y<=a;
WHEN"01"=> y<=b;
WHEN"10"=> y<=c;
WHEN"11"=> y<=d;
WHEN OTHERS=>NULL; --其它情况为空值
END CASE; --CASE语句结束
END PROCESS; --PROCESS进程语句结束
END ARCHITECTURE one;
仿真前的波形:
仿真后的波形
实验总结:。