北邮数电实验报告-信息(共16页).docx

上传人:飞****2 文档编号:14356544 上传时间:2022-05-04 格式:DOCX 页数:16 大小:680.93KB
返回 下载 相关 举报
北邮数电实验报告-信息(共16页).docx_第1页
第1页 / 共16页
北邮数电实验报告-信息(共16页).docx_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《北邮数电实验报告-信息(共16页).docx》由会员分享,可在线阅读,更多相关《北邮数电实验报告-信息(共16页).docx(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上数字电路与逻辑设计实验姓 名 * 学 院 信息与通信工程学院专 业 信息工程 班 级 * 学 号 * 班内序号 * 实验一一、实验名称和实验任务要求1. 实验内容:QuartusII原理图输入法设计与实现。2. 实验目的:(1) 熟悉用QuartusII原理图输入法进行电路设计和仿真。(2) 掌握QuartusII图形模块单元的生成与调用。(3) 熟悉实验板的使用。3. 实验任务要求:(1) 用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图像模块。 (2) 用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板上测试。要

2、求用拨码开关设定输入信号,发光二极管显示输出信号。(3) 用3线8线译码器(74LS138)和逻辑门实现函数F=(/𝐶)(/𝐵)(/𝐴)+(/𝐶)𝐵(/𝐴)+𝐶(/𝐵)(/𝐴)+𝐶𝐵𝐴,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。二、原理图半加器模块和逻辑门设计实现的全加器:三、仿真波形图及分析电路实现了全加器的功能。全加器是实现两个1位二进制数及低位来的进位相

3、加求得和数及向高位进位的逻辑电路。由其原理可得逻辑表达式:sum=ainbincincout = (ainbin)cin + ain*bin。列出真值表:输入输出ainbincincoutsum0000000101010010111010001101101101011111仿真波形对比真值表,可以看出波形图与理论值完全符合。四、故障及问题分析1、问题:按照逻辑表达式连接了全加器电路后,仿真波形很乱。解决方法:思考后知道了应该把输入信号依次设成2的n次方,这样的仿真波形清楚容易分析。2、问题:把代码下载到板子上的过程中,进行到37%的时候停了,等了2分钟也没继续下载。解决方法:再次重连USB尝试

4、下载,手紧握着接线口,下载成功了,分析可能是接线口接触不好。实验二一、实验名称和实验任务要求1. 实验内容:用VHDL设计与实现组合逻辑电路。2. 实验目的:(1) 熟悉用VHDL语言设计组合逻辑电路的方法。(2) 熟悉用QuartusII文本输入法进行电路设计。3. 实验任务要求:(1) 用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个1时,输出为1,否则输出0,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 (2) 用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,

5、发光二极管显示输出信号。(3) 用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,7段数码管显示输出信号。二、VHDL代码1. 奇校验器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY jijiaoyanqi ISPORT( A:STD_LOGIC; B:STD_LOGIC; C:STD_LOGIC; D:STD_LOGIC; F:OUT STD_LOGIC);END jijiaoyanqi;ARCHITECTURE one OF jijiaoyanqi IS SIGNAL n1,n2

6、 : STD_LOGIC;BEGIN n1=A XOR B; n2=n1 XOR C; F B B B B B B B B B B B=ZZZZ;END CASE;END PROCESS;END zhuanyu3; 3. 数码管译码器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY shumaguanyimaqi ISPORT( A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); C:OUT ST

7、D_LOGIC_VECTOR(5 DOWNTO 0);END shumaguanyimaqi;ARCHITECTURE shuma OF shumaguanyimaqi ISBEGINPROCESS(A)BEGINC B B B B B B B B B B B=ZZZZZZZ;END CASE;END PROCESS;END shuma;三、故障及问题分析1、问题:代码写好以后编译出现错误,Error (10568): VHDL error at jijiaoyanqi.vhd(17): cant write to interface object partout of mode IN,由于报

8、错指到了第17行F=n2 XOR D; 导致我开始的时候没意识到这是哪里的错误。解决方法:在百度查了以后发现是F:OUT STD_LOGIC); 这句我写成了F:IN STD_LOGIC);以后要注意少犯这些马虎的错误。2、问题:把代码下载到板子上的过程中,再次出现了第一节课出现的下载停止的问题,再次尝试后也没有下载成功,第三次接线的时候等了好久,Hardware Setup窗口也没有显示有硬件接入。解决方法:换了一台电脑尝试然后成功了,我觉得可能是两个原因,一是我反复操作导致软件反应时间长,二是我本来用的电脑接口连接不好。实验三一、实验名称和实验任务要求1. 实验内容:用VHDL设计与实现时

9、序逻辑电路。2. 实验目的:(1) 熟悉用VHDL语言设计时序逻辑电路的方法。(2) 熟悉用QuartusII文本输入法进行电路设计。3. 实验任务要求:(1) 用VHDL语言设计实现一个分频系数为12,分频输出信号占空比为50%的分频器。要求在QuartusII平台上设计程序并仿真验证设计。 (2) 用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证其功能,并下载到实验板测试。要求用按键设定输入信号,发光二极管显示输出信号。(3) 将(1)、(2)和数码管译码器3个电路进行连接,并下载到实验板显示计数结果。二、模块端口说明及连接图1. 整个电路输入端:时钟信号CLK,复位

10、键CLR。2. 分频器及计数器的端口连接:复位键CLR作为分频器复位键CLR1、8421十进制计数器复位键CLR2;时钟信号CLK作为分频器的时钟信号CLK1,分频器输出CLK_OUT1作为8421十进制计数器的时钟信号CLK2;计数器的输出Q0,1,2,3作为数码管译码器的输入a 0,1,2,3。3. 整个电路输出端:b0,1,2,3,4,5,6,分别对应7段数码管;c0,1,2,3,4,5,分别对应6个数码管译码器。三、VHDL代码(1) 8421十进制计数器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIG

11、NED.ALL;ENTITY ZY8421shijinzhi ISPORT(CLK2,CLR2:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ZY8421shijinzhi;ARCHITECTURE behave OF ZY8421shijinzhi ISSIGNAL Q_temp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK2,CLR2)BEGINIF CLR2 = 1 THEN Q_temp =0000;ELSIF CLK2EVENT AND CLK2 = 1 THEN IF Q_tem

12、p = 1001 THEN Q_temp =0000;ELSE Q_temp =Q_temp+1;END IF;END IF;END PROCESS;Q =Q_temp;END behave;(2) 分频器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY div_50M ISPORT(CLK1,CLR1:IN STD_LOGIC;CLK_OUT1:OUT STD_LOGIC);END div_50M;ARCHITECTURE behave OF div_50M ISSIGNAL te

13、mp:INTEGER RANGE 0 TO ;SIGNAL clkout:STD_LOGIC;BEGINPROCESS(CLK1,CLR1)BEGINIF CLR1 = 1 THEN temp =0;ELSIF CLK1EVENT AND CLK1 = 1 THENIF temp = THEN temp =0;clkout =NOT clkout;ELSE temp =temp+1;END IF;END IF;END PROCESS ;CLK_OUT1 CLK,CLR1=CLR,CLK_OUT1=clkin);u2: ZY8421shijinzhi PORT MAP (CLK2=clkin,C

14、LR2=CLR,Q=a);PROCESS(a)BEGINc b b b b b b b b b b b b=; 这一行,导致情况包括不完全而报错。3、问题:仿真波形中b的显示类似乱码,并不是预想的二进制码。解决方法:老师讲解后知道了应该在Count Value选项中的Radix栏选择Binary。实验四一、实验名称和实验任务要求1. 实验内容:用VHDL设计与实现相关电路。2. 实验目的:(1) 掌握VHDL语言的语法规范,掌握时序电路描述方法。(2) 掌握多个数码管动态扫描显示的原理及设计方法。3. 实验任务要求:(1) 用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示“班号班内

15、序号”这6个数字图形到6个数码管,仿真验证其功能,并下载到实验板测试。 (2) 用VHDL语言设计并实现六个数码管滚动显示电路。循环左滚动,始终点亮6个数码管,左出右进。状态为:124-17,24-171,4-1712,-17124,17124-,7124-1,124-17。二、 模块端口说明及连接图1. 输入端:clk时钟信号2. 输出端:partout0,1,2,3,4,5,6,分别对应7段数码管;catout0,1,2,3,4,5:分别对应6个数码管译码器三、VHDL代码(1) 同时显示“班号班内序号”这六个数字图形到6个数码管LIBRARY IEEE;USE IEEE.STD_LOGI

16、C_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ZY12417 ISPORT ( clk : IN STD_LOGIC;partout : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);catout : OUT STD_LOGIC_VECTOR(5 DOWNTO 0) );END ZY12417;ARCHITECTURE A OF ZY12417 ISSIGNAL part: STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL cat: STD_LOGIC_VECTOR(5 DOWNTO 0);SIGN

17、AL tempclk: STD_LOGIC;SIGNAL count: INTEGER RANGE 0 TO 1999;-为便于仿真,仿真图对应代码将分频改成了50CONSTANT M: INTEGER :=1999;BEGINP1:PROCESS(clk)BEGINIF(clkEVENT AND clk=1)THENIF count=M THENcount=0;tempclk= NOT tempclk;ELSEcount cat=;part cat=;part cat=;part cat=;part cat=;part cat=;part cat=;part=; -1END CASE;END

18、 IF;END PROCESS P2;catout=cat;partout=part;END A;(2) 滚动显示电路(选做)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY gundongxianshi IS PORT( clk,clear:IN STD_LOGIC; catout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); partout:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);END gundongxianshi;ARCHITEC

19、TURE a OF gundongxianshi IS SIGNAL cat :STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL part :STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL cnt,cnt1 :INTEGER RANGE 0 TO 11; SIGNAL tmp:INTEGER RANGE 0 TO 15999; SIGNAL clk1:STD_LOGIC;BEGIN p0:PROCESS(clk,clear) BEGIN IF clear=0 THEN tmp=0; ELSIF clkEVENT AND clk=1 THEN I

20、F tmp=15999 THEN tmp=0; ELSE tmp=tmp+1; END IF; END IF; END PROCESS p0; p1:PROCESS(tmp) BEGIN IF clkEVENT AND clk=1 THEN IF tmp1000 THEN clk1=0; ELSE clk1=1; END IF; END IF; END PROCESS p1; p2:PROCESS(clk) BEGIN IF(clkEVENT AND clk=1) THEN IF(cnt=11) THEN cnt=0; ELSE cnt=cnt+1; END IF; END IF; END P

21、ROCESS p2; p3:PROCESS(clk1) BEGIN IF(clk1EVENT AND clk1=1) THEN IF(cnt1=11) THEN cnt1=0; ELSE cnt1=cnt1+1; END IF; END IF; END PROCESS p3; p4:PROCESS(cnt,cnt1) BEGIN IF(clear=0)THEN catcatcatcatcatcatcatcat=; END CASE; END IF; END PROCESS p4; catout=cat; p5:PROCESS(cnt) BEGIN IF(clear=0) THEN partpa

22、rtpartpartpartpartpartpart=; END CASE; END IF; END PROCESS p5; partout=part;END a; 四、 仿真波形图及分析同时显示“班号班内序号”这六个数字图形到6个数码管分析仿真波形图可知,数码管译码器从左到右依次显示124-17:从左边数,第一个数字catout=对应partout=,数码管显示数字1;第二个数字catout=对应partout=,数码管显示数字2;第三个数字catout=对应partout=,数码管显示数字4;第四个数字catout=对应partout=,数码管显示符号“”;第五个数字catout=对应pa

23、rtout=,数码管显示数字1;第六个数字catout=对应partout=,数码管显示数字7;当频率足够大,扫描速度很快时,人眼将能看到持续稳定的124-17 的图像。在实验室实际测试时,下载到电路板测试成功。五、故障及问题分析1、问题:稳定显示数字的代码写好以后编译出现错误,Error (10500): VHDL syntax error at ZY12417.vhd(29) near text PROCESS; expecting if。解决方法:把代码从头到尾仔细检查以后,发现是应该在26行后面加一行END IF; 又犯了这种低级错误,以后一定要注意代码规范。2、问题:稳定显示数字的代

24、码进行仿真时得不到理想的波形图。解决方法:需要把仿真结束时间调大,把分频系数调小。我把结束时间调到了1ms,分频系数改为了50,得到了理想的波形。回想第三次实验也遇到了这个问题,因为老师在一旁讲解,所以对于这一点没有留下很深的印象,以后我要多练习自己独立操作的能力。3、问题:开始的时候自己写的滚动代码电路编译多处报错,对于如何改正代码完全没有头绪。解决方法:通过百度还有在同学的指导下用多进程描述方式编成了正确的代码。我意识到自己还有很多不足。总结和结论一、总结在这学期的数电实验中,我第一次接触可编程逻辑器件。可编程逻辑器件的开发主要是软件设计和硬件调试两部分。设计时通过Quartus II以原

25、理图或VHDL硬件描述语言的方式,并在机上仿真调试完成逻辑检查,然后下载到开发板进一步硬件测试。在实验过程中我因为知识学习理解不到位、不够细心、代码编写不规范等原因遇到了各种小问题,所幸所有问题最后都得到了很好的解决。第一次实验课上老师详细演示了QuartusII软件的操作;前两次实验内容要求相对比较简单,通过自己看课本学习和听老师的讲解,比较顺利地完成了实验任务;从第三次实验开始深入接触到VHDL语言中元件、进程等概念,为代码实现提供不同的选择方向。有了第三次实验的学习基础,第四次实验编代码就有了思路,但是我觉得选做实验还是有难度,自己最开始编写的代码只能使数字闪烁但不能滚动,最后通过查资料

26、还有向学霸讨教才完成;在改代码的过程中还有一点我感受很深的是,同样的功能,有的编写方法用很简洁的代码就能够实现,有的代码就很长读起来也更耗时间,我以后在编程过程中会多学习好的例子,用更简洁的语言来实现自己想表达的逻辑。二、结论这四次实验让我收获了很多。我把在数电理论课上学到的知识应用到了实际电路中,对逻辑电路和时序电路的工作原理以及控制过程有了更清晰的理解;了解了MAXII实验板的基本功能;掌握了QuartusII软件的基本使用方法;掌握了原理图设计输入的方法以及编写相对简单的VHDL代码的方法;学会了将原理图或代码进行波形仿真和下载测试;提升了逻辑思维能力,锻炼了实践能力。总之,以后我会多练习用QuartusII软件编写更加复杂的代码,进行更深入的了解与应用,打好基础,做好准备迎接下学期更具挑战性的实验课程。专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁