欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    北邮数字电路与逻辑设计实验上-综合实验报告.docx

    • 资源ID:989349       资源大小:1.23MB        全文页数:21页
    • 资源格式: DOCX        下载积分:20积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要20积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    北邮数字电路与逻辑设计实验上-综合实验报告.docx

    1、数字电路与逻辑设计实验综合实验报告学院:信息与通信工程学院目 录一、实验题目和任务要求3(一)Quartus II原理图输入法设计与实现3(二)用VHDL设计与实现组合逻辑电路3(三)用VHDL设计与实现时序逻辑电路3(四)用VHDL设计与实现相关电路4二、实验内容、原理图、VHDL代码和仿真波形分析4(一)Quartus II原理图输入法设计与实现41.半加器42.全加器53.3-8线译码器6(二)用VHDL设计与实现组合逻辑电路61.数码管译码器62.8421码转余3码63.奇校验器7(三)用VHDL设计与实现时序逻辑电路81.8421十进制计数器82.分频器83.组合电路实现数码管0到9

    2、循环显示8(四)用VHDL设计与实现相关电路131.数码管动态扫描控制器132.点阵行扫描控制器16三、故障及问题分析20四、总结和结论21五、参考文献21一、 实验题目和任务要求(一) Quartus II原理图输入法设计与实现实验题目Quartus II原理图输入法设计与实现任务要求1)用逻辑门设计一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。2) 用生成的半加器模块和逻辑门设计与实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二级管显示输出信号。3) 用3-8线译码器和逻辑门设计和实现函数,仿真验证其功能。(二) 用VHDL设计与实现组合逻

    3、辑电路实验题目1)数码管译码器2)8421码转余3码3)奇校验器任务要求1)用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。2)用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。3)用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个1时,输出为1,否则输出为0,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。(三) 用VHDL设计与实现时序逻辑电路实验题目1)8

    4、421十进制计数器2)分频器3)组合电路实现数码管0到9循环显示任务要求1)用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证其功能,并下载到实验板测试。要求用按键设定输入信号,发光二极管显示输出信号。2)用VHDL语言设计实现一个分频系数为12,分频输出信号占空比为50%的分频器。要求在Quartus II平台上设计程序并仿真验证设计。3)讲(1)、(2)和数码管译码器3个电路进行连接,并下载到实验板显示计数结果。(四) 用VHDL设计与实现相关电路实验题目(二选一)1)数码管动态扫描控制器2)点阵行扫描控制器任务要求1)用VHDL语言设计实现一个数码管动态扫描控制器,要

    5、求显示班号后3位和班内序号。仿真验证其功能,并下载到实验板测试。2)用VHDL语言设计实现一个88点阵行扫描控制器,要求从上至下逐行循环点亮点阵(红色或绿色均可),每行点亮时间为0.5秒。3)用VHDL语言设计实现一个88点阵行扫描控制器,要求从上至下逐行点亮点阵,第一行为红色,第二行为绿色,依次类推,直至点亮所有行,然后全部熄灭,再重新从第一行开始。二、 实验内容、原理图、VHDL代码和仿真波形分析(一) Quartus II原理图输入法设计与实现1. 半加器原理图:2. 全加器原理图其中halfadder元件是之前生成的半加器图形模块单元。仿真波形图波形分析全加器包括两个加数A和B、从低位

    6、进位Ci、向高位进位Co、和值S,其真值表如下:ABCISCO0000000110010100110110010101011100111111波形图中,高电平对应真值表中的1,低电平对应真值表中的0,设置“End Time”为50s ,A、B、Ci三个输入的波形周期分别为1s、2s、4s,可对应出真值表中的8种输入状态。S、Co为输出,同样,根据高低电平对照真值表,可以判断输出无误。输出波形中的冒险可通过增加冗余项消除,但对于本实验来说并无大碍。3. 3-8线译码器本实验采用已有的3-8线译码器元件,再将表达式中四个最小项对应的输出管脚通过与非门连接即可。仿真波形图(二) 用VHDL设计与实现

    7、组合逻辑电路在编写本次实验的代码时,我采用的是较为直观的CASE语句,罗列出所有可能。代码比较简单,故只列出代码,不再赘述。1. 数码管译码器VHDL代码详见实验(三)3中VHDL代码的e7_2.vhd文件。2. 8421码转余3码VHDL代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY e7_3 ISPORT(a:IN STD_LOGIC_VECTOR(3 DOWNTO 0);b:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );END e7_3;ARCHITECTURE arch OF e7_3 ISBEGINPROCE

    8、SS(a)BEGINCASE a ISWHEN 0000 = b b b b b b b b b b b b b b b b b b b b b b b b b b b b clk_in, clear=clear_in, clk_out=clktmp);u2: e7_8 PORT MAP (clk=clktmp, clear=clear_in, q=q_twmp);u3: e7_2 PORT MAP (a=q_twmp, CAT=CAT_out, b=b_out);END arch;e7_11.vhd:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE I

    9、EEE.STD_LOGIC_UNSIGNED.ALL;ENTITY e7_11 ISPORT(clk: IN STD_LOGIC;clear: IN STD_LOGIC;clk_out: OUT STD_LOGIC);end e7_11;ARCHITECTURE arch OF e7_11 ISSIGNAL tmp: INTEGER RANGE 0 TO 12499999;SIGNAL clktmp: STD_LOGIC;BEGINPROCESS (clear,clk)BEGINIF clear=1 THENtmp=0;clktmp=0;ELSIF clkevent AND clk=1 THE

    10、NIF tmp=12499999 THENtmp=0;clktmp=NOT clktmp;ELSEtmp=tmp+1;END IF;END IF;END PROCESS;clk_out=clktmp;END arch;e7_8.vhd:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY e7_8 ISPORT(clk: IN STD_LOGIC;clear: IN STD_LOGIC;q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END e7_8;ARCHITE

    11、CTURE arch OF e7_8 ISSIGNAL q_temp: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk)BEGINIF clear=1 THENq_temp=0000;ELSIF (clkevent AND clk=1) THENIF q_temp=1001 THENq_temp=0000;ELSEq_temp=q_temp+1;END IF;END IF;END PROCESS;q=q_temp;END arch;e7_2.vhd:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY e7_

    12、2 ISPORT(a:IN STD_LOGIC_VECTOR (3 downto 0);b:OUT STD_LOGIC_VECTOR (6 downto 0);CAT:OUT STD_LOGIC_VECTOR (5 downto 0);end e7_2;ARCHITECTURE arch OF e7_2 ISBEGINPROCESS (a)BEGINCAT b b b b b b b b b b b =0000000;END CASE;END PROCESS;END arch;仿真波形图注:为便于仿真,分频器系数设置为4。波形分析从波形图中可以看出,当异步复位信号clear_in为0时,电路正

    13、常工作,时钟信号clk_in先通过分频器实现降频,每通过4个时钟上升沿,输出一个降频后的时钟上升沿,相当于频率降低4倍。降频后的时钟信号进入计数器,每一个上升沿计数加1,从0到9循环计数,并以二进制数输出。最后通过数码管译码器,将二进制数转换为七段数码管,显示数字0到9循环。CAT_out控制开发板上的六个数码管显示哪一个,低电平有效。从波形图中看出,本实验选择的是3号数码管显示数字。当异步复位信号clear_in为1时,分频器、计数器异步复位,从波形图中可以看出,数码管立刻显示数字0。待异步复位信号clear_in回到0时,重新开始计数并显示。在实际实验中,由于利用的是开发板上50MHz的高

    14、频时钟信号,所以分频系数设置为25M(25000000),即分频器中从0到12499999计数,分频后的时钟为2Hz。计数器、数码管译码器不作改动。数码管每0.5s显示一个数字,从0到9循环显示。(四) 用VHDL设计与实现相关电路本次实验的两个电路的VHDL代码我都编写了,实验时下载到开发板上的是第一个实验数码管动态扫描控制器,在报告中这两个实验我都会给出详细解释,但是重点放在第一个上。1. 数码管动态扫描控制器本实验主要由两个PROCESS部分组成,第一部分是分频器,第二部分是7段数码管显示器,中间用SIGNAL连接。当输入时钟频率较高时,每次扫描所用时间很短,人眼难以分辨,看起来就像是持

    15、续亮着一样。如果将分频器的分频系数调高,如上一个实验调成25M,则数字会从左到右一个一个显示,间隔为0.5s。端口说明元件名端口输入/输出名称相关信息或功能主体clk输入端时钟信号开发板clk的频率为50MHzclear输入端异步复位信号异步复位清零p_out6,0输出端七段控制信号通过控制a到g的亮灭,显示不同的数字CAT_out5,0输出端六位控制信号控制六位数码管的显示分频器clk输入端时钟信号clear输入端异步复位信号异步复位使输出时钟置0clk_temp输出端时钟信号分频后的时钟信号数码管显示器clk输入端时钟信号每经过一个上升沿,CAT和part都发生变化(进入下一状态),其中C

    16、AT的状态转移图如下b6,0输出端七段控制信号根据输入的二进制数,通过控制a到g的亮灭,显示不同的数字CAT5,0输出端六位控制信号低电平有效,控制六位数码管的显示101111011111111110110111111011111101CAT的状态转移图(如果出现其他状态均转移到111110以保证进入循环)连接图p_out6,0数码管显示器分频器clkclearclkclearclk_temppart6,0CAT5,0CAT_out5,0clkVHDL代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.A

    17、LL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY number IS PORT(clk,clear: IN STD_LOGIC;p_out: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);CAT_out: OUT STD_LOGIC_VECTOR(5 DOWNTO 0);END number;ARCHITECTURE arch OF number ISSIGNAL clk_temp: STD_LOGIC;SIGNAL count: INTEGER RANGE 0 to 5;SIGNAL part: STD_LOGIC_VECTOR(6 DOWNT

    18、O 0);SIGNAL CAT: STD_LOGIC_VECTOR(5 DOWNTO 0);BEGINu1:PROCESS(clk)BEGINIF(clear=1)THENcount=0;ELSIF(clkEVENT AND clk=1)THENIF count=5 THENcount=0;clk_temp= NOT clk_temp;ELSEcount CAT =011111; part CAT =101111; part CAT =110111; part CAT =111011; part CAT =111101; part CAT =111110; part CAT =111110;

    19、part=1111110; -显示数字0END CASE;END IF;END PROCESS u2;CAT_out=CAT;p_outclk, clear=reset, clk_out=clk2);u2:PROCESS(clk2,reset) BEGINIF(reset=1)THEN number=0; ELSIF(clk2EVENT AND clk2=1)THEN IF(number=7)THEN number=0; ELSE number hang hang hang hang hang hang hang hang = 00000001;END CASE;END PROCESS u3;

    20、 u4:PROCESS(number) BEGIN IF (number=0 OR number=2 OR number=4 OR number=6)THENred=11111111;green=00000000; ELSEred=00000000;green=11111111; END IF;END PROCESS u4; row=hang; colR=red;colG=green;END arch;e7_11.vhd:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY e7_11 I

    21、SPORT(clk: IN STD_LOGIC;clear: IN STD_LOGIC;clk_out: OUT STD_LOGIC);end e7_11;ARCHITECTURE arch OF e7_11 ISSIGNAL tmp: INTEGER RANGE 0 TO 1;SIGNAL clktmp: STD_LOGIC;BEGINPROCESS (clear,clk)BEGINIF clear=1 THENtmp=0;clktmp=0;ELSIF clkevent AND clk=1 THENIF tmp=1 THENtmp=0;clktmp=NOT clktmp;ELSEtmp=tm

    22、p+1;END IF;END IF;END PROCESS;clk_out=clktmp;END arch;仿真波形图注:为便于仿真,分频器系数设置为4。波形分析从波形图中可以看出,该代码实现了行的循环显示,并且根据奇偶行数显示不同的颜色。reset是异步复位端,可以使行数回到第一行,重新开始扫描。三、 故障及问题分析1. 在半加器实验中,连接输入端INPUT和模块接口时容易虚连。为防止该问题,必须用线连接,待接口处出现小方框时方可松手。2. 在全加器实验中,使用生成的半加器符号文件需要提前放到全加器目录下,这样才能在元件列表中找到。3. 在使用VHDL语言时,输入输出的类型容易出错。比如:数

    23、组类型需要标注出数组从几DOWNTO几;在使用INTEGER RANGE类型时,需要加上头文件IEEE.STD_LOGIC_UNSIGNED.ALL;要把所有的敏感信号都写到PROCESS()内。以上问题是我在编译代码的过程中出现过的问题及解决方法。4. 在分频器实验中,修改分频系数时,除了要修改PROCESS内的技术周期外,还要记得修改clktmp信号的取值范围,使二者保持一致。5. 在“组合电路实现数码管0到9循环显示”实验时,需要同时调用三个之前写好的vhd文件。之前写的计数器是clear为0时置零,而主体部分设置的是clear置1时置零,这就造成了仿真波形不正确的问题,并且不易排查出来

    24、。以后在调用其他代码前要注意clear的清零电平是否一致。6. 在同一个PROCESS内变化的量应该用SIGNAL替代,之后在PROCESS外面将该信号赋值给变量并作为输出,不能在PROCESS中直接使用变量赋值。7. 在写输出信号时,如果信号为数组,后面要写成带的形式。例如定义信号row: OUT STD_LOGIC_VECTOR(7 DOWNTO 0),则输出信号名称为row7,0。8. 在设置复位信号clear时,要注意是同步复位还是异步复位,同步复位需要先判断上升下降沿再判断复位,异步复位需要先判断复位再判断上升下降沿。一般统一设置成异步信号。四、 总结和结论本学期的数字电路与逻辑设计

    25、实验主要学习的是基于VHDL语言的EDA设计方法。首先学习了图形化设计方法,但是图形化设计方法对于设计功能复杂的电路时,需要先知道其逻辑关系,较为麻烦。之后重点学习了VHDL语言,该语言语法较为简单,并且可以使用IF、CASE等语句实现较为复杂的逻辑关系。对于大规模、逻辑较为复杂、使用多个元器件的电路,还可以使用模块化的设计方法,先设计出所需元器件,之后利用COMPONENT等连接语句和信号实现多文件之间的连接。也可以利用多个PROCESS实现多模块进程。通过本学期的学习,我学会了VHDL语言的语法及使用方法,学会了利用Quartus II软件设计和仿真简单的数字电路,了解了实验板的使用方法,并尝试将程序下载到实验板进行测试。对于较为复杂的电路,我学会了利用模块化的方法设计并实现电路。在实验过程中,最开始经常出现许多语法错误导致编译不通过,需要我耐心修改调试。之后通过分析波形也发现了许多逻辑错误,比如复位端的高低电平问题。分析波形是很重要的技能,通过对仿真波形的分析可以找到不易发现的逻辑错误,并且省去了下载到实验板验证的过程。最后一次实验较为复杂和综合,在编写代码的时候颇费了一番时间,最终还是在努力之下达到了预期的效果。我觉得本学期我除了学到了一门新的编写数字电路的语言外,更重要的是学到了处理一个复杂工程的方法,就是分模块处理,将一个大问题细化为各个模块,逐一


    注意事项

    本文(北邮数字电路与逻辑设计实验上-综合实验报告.docx)为本站会员(风****)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922