ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:133.48KB ,
资源ID:8307196      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8307196.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字电路与逻辑设计实验.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字电路与逻辑设计实验.docx

1、数字电路与逻辑设计实验 数字电路与逻辑设计实验报告 学 院: 班 级: 姓 名: 学 号: 日 期: 一 实验名称:实验一:QuartusII 原理图输入法设计与实现实验二:用 VHDL 设计与实现组合逻辑电路实验三:用 VHDL 设计与实现时序逻辑电路实验四:用 VHDL 设计与实现数码管动态扫描控制器二 实验所用器件及仪器:1.计算机2.直流稳压电源3.数字系统与逻辑设计实验开发板三 实验要求:实验一:(1) 用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。(2) 用(1)实现的半加器和逻辑门设计实现一个全加器,仿真并验证其功能,并下载到实验板上测试。要求用拨码开

2、关设定输入信号,发光二极管显示输出信号。(3) 用38线译码器和逻辑门设计实现函数F=/C/B/A+/CB/A+C/B/A+CBA,仿真验证其功能并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。注:实验时将三个元器件放在一个new block diagram中实现。实验二:(1) 用VHDL语言设计实现一个共阴极7段数码译码器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,7段数码管显示输出信号。(2) 用VHDL语言设计实现一个8421码转余三码的代码器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。(3)

3、用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个1时,输出1,否则出0;仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。实验三:(1) 用VHDL语言设计实现一个带异步复位的8421 十进制计数器,仿真验证其功能,并下载到实验板测试。要求用按键设定输入信号,发光二极管显示输出信号。(2) 用VHDL语言设计实现一个分频系数为12,输出信号占空比为50%的分频器,仿真验证其功能。注:实验时将(1)、(2)和数码管译码器 3 个电路进行,并下载到实验板显示计数结果。实验四:(1) 用VHDL语言设计实现六个数码管串行扫描电路,要求同时显示0,1,2,

4、3,4,5这几个不同的数字图形到数码管上,仿真验证其功能,并下载到实验板测试。(2) 用VHDL语言设计实现六个数码管滚动显示电路:A 循环左循环,左进右出。状态为:012345-123450-234501-345012-450123-501234-012345B 向左滚动,状态为(X表示数码管不显示):012345-12345X-2345XX-345XXX-45XXXX-5XXXXX-XXXXXX-XXXXX0-XXXX01-XXX012-XX0123-X01234-012345四 实验原理及设计思路:实验一:(1) 半加器是考虑两位二进制数相加,出来的结果有二者加后的一个低位数,和一个这两

5、位数相加所得的进位数。所以用异或门和与门即可实现双输入双输出的半加器。(2) 全加器可以以半加器为基础,在考虑两位二进制数相加时也考虑上地位的进位信号,输出与半加器类似。(3) 译码器加逻辑门可以实现相应的逻辑函数,将有相应最小项的输出项或即可。实验二:(1) 共阴极7段数码译码器:拨码开关的不同状态对应输入信号的0和1,通过改变拨码开关的状态改变输入值,此时用VHDL语言描述每个输入值下对应的数在数码管中的显示。(2) 8421码转余三码的代码器:将8421BCD码加上0011即为对应的余三码,通过通过改变拨码开关的状态改变输入的84212BCD码,由四个LED灯的亮与灭(亮表示该值为1,灭

6、表示0),来表示余三码的码值。(3) 奇偶校验电路:同理用拨码开关设定输入信号,发光二极管显示输出信号,输入奇数个1时,对应的发光二极管亮,反之则为熄灭状态。实验三:(1) 异步计数器:由于是异步复位,且yibuclear(清零信号)优先级最高,当它有效时使状态清零。或者当到达第11个状态(1010)时复位,使状态回归到初始状态(0000)。其余时刻,用cp来计数,每按一次键cp=1,状态加1。因此设计2个输入端,一个输出端数组即可。(2) 分频器:是使cp经过12个周期,输出的信号正好完成一次完整的翻转,因此需要计数,该计数器模值为12,每六个状态时翻转一次。(3) 可以使用分频器为异步计数

7、器提供脉冲信号,异步计数器的输出作为数码管译码管的输入,由数码管译码管显示当前数据。实验四:(1) 六个数码管串行扫描电路:由实验板上18号元件提供时钟,每过一个周期,亮一个数码管,且该数码管序号也会改变,因此需要两个数组来体现这种改变。设选择一个管亮的数组为xuan(5 downto 0),数码管上控制输出数字形状的数组为guan(6 downto 0),通过输入的时钟改变状态(signal status),由状态定xuan,guan。由于要求“同时显示”,我们知道闪烁发光的二极管闪烁频率较高时,我们将观察到持续点亮的现象,一个数码管要稳定,需要显示频率大于50HZ,现在需要6个数码管同时显

8、示,因而时钟的频率应该大于300HZ。(2) 六个数码管滚动扫描电路:大致原理同(1),但是需要注意guan不再只有6个状态,需要用12个状态来配合周期循环使用。需要每轮的管子状态改变一个位移。此时可以把xuan由循环来赋值,实现控制不同时刻数码管的亮与灭。五 实验模块端口及连接图:实验三(3):分频器的时钟信号接外部时钟,异步清零端接外部信号,异步清零信号有效时可以实现分频器部计数清零。当外部时钟clk=1时,分频器部计数器的状态加1,每六个状态clk_out实现一次翻转。分频器的输出作为异步计数器的时钟,异步计数器的异步复位端接外部输入,可由实验板上拨码开关实现。这样就将外部时钟12分频后

9、输入给异步计数器,异步计数器将计数输入数码译码器,实现控制数码管的状态,使之显示异步8421十进制计数器的此刻的数。实验四:(1) clk是输入信号,接外部时钟信号(location对应实验板18),要求频率大于300HZ,clear是异步复位信号。guan为输出信号,连接到数码管上对应的7条线,控制这个数码管中每一段线的亮与灭,实现显示数字。xuan是控制6个数码管此时应该亮哪一个。由signal status根据输入信号确定此时对应的状态下的xuan和guan。(2) 循环左滚动:输入信号为clk,clear。Clear为异步复位信号,Clk接外部时钟,该时钟共有4种频率(可以通过改变粉红

10、色按钮上的小拨码开关调整),为了使实验现象符合要求,我们可以选择最高频率并对它进行分频,分出我们所需要的合适的频率,再由分频器输出的信号控制状态变化,每来一个时钟改变一次状态,xuan和guan为输出信号,分别控制该时刻应该亮哪个数码管和这个数码管上每条线的亮与灭状态。故clk接实验板上18,clear可由按键实现,xuan接实验板上cat(05)guan接数码管上每条线所对应的数字。小周期计数器控制每位数码的显示,大周期计数器控制数码的移位。(3) clk为输入信号,接外部时钟实验板上18,通过循环移位及每来一个cp对xuan进行一次赋值,选择此时该亮的灯。通过改变输出guan和xuan,从

11、而得出能熄灭能亮的现象。guan接数码管上的每条线所对应位置,xuan接六个数码管的cat端 六 实验原理图或者VHDL代码:(1) 实验一(2):其中半加器ba的原理图如下所示:(2) 实验三(3)VHDL代码如下:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY sange IS PORT( clk:IN STD_LOGIC; clear,clearyibu:IN STD_LOGIC; b:OUT STD_LOGIC_VECTOR(6 downto 0); y2,y3,y4,

12、y5,y6,y7:OUT STD_LOGIC);end sange;ARCHITECTURE a OF sange IS component fenpin PORT( clk:IN STD_LOGIC; clear:IN STD_LOGIC; clk_out:OUT STD_LOGIC ); END component; component yibu PORT( cp,clear:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END component; component seg7_1 PORT(a:IN STD_LOGIC_VECT

13、OR (3 downto 0);b:OUT STD_LOGIC_VECTOR(6 downto 0);c,d,e,f,g,h:OUT STD_LOGIC); END component;SIGNAL na:STD_LOGIC; SIGNAL nb:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN u1:fenpin PORT MAP(clk=clk,clear=clear,clk_out=na); u2:yibu PORT MAP(cp=na,clear=clearyibu,q=nb); u3:seg7_1 PORT MAP(a=nb,b=b,c=y2,d=y3,e=y4,

14、f=y5,g=y6,h=y7); END a;其中fenpin,yibu,seg7_1的VHDL代码如下:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fenpin IS PORT( clk:IN STD_LOGIC; clear:IN STD_LOGIC; clk_out:OUT STD_LOGIC ); END fenpin; ARCHITECTURE a OF fenpin IS SIGNAL tmp:INTEGER RANGE 0 TO 5; SIGNAL clktm

15、p: STD_LOGIC; BEGIN PROCESS(clear,clk) BEGIN IF clear=0 THEN tmp=0; ELSIF (clkevent and clk=1) THEN IF tmp=5 THEN tmp=0; clktmp=NOT clktmp; ELSE tmp=tmp+1; END IF; END IF; END PROCESS; clk_out=clktmp; END a;yibu:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY yibu

16、IS PORT( cp,clear:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END yibu; ARCHITECTURE a OF yibu IS SIGNAL temp:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(cp) BEGIN IF clear=1 THEN temp=0000; elsIF temp=1010THEN temp=0000; else IF (cpevent and cp=1) THEN temp=temp+1; END IF; end if; END PROCE

17、SS; q=temp; END a;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY seg7_1 ISPORT(a:IN STD_LOGIC_VECTOR (3 downto 0);b:OUT STD_LOGIC_VECTOR(6 downto 0);c,d,e,f,g,h:OUT STD_LOGIC);数码管译码器VHDL代码:end seg7_1;ARCHITECTURE seg7_1_arch OF seg7_1 ISBEGINc=0;d=1;e=1;f=1;g=1;hBBBBBBBBBBB=0000000; END CASE;END PR

18、OCESS;END;(3) 实验四(1) 数据管串行扫描电路:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY chuanxing ISPORT(clk,clear:IN STD_LOGIC;guan:out STD_LOGIC_VECTOR (6 downto 0);xuan:OUT STD_LOGIC_VECTOR(5 downto 0);end chuanxing;ARCHITECTURE yu OF chuanxing ISsignal status:integer range

19、 0 to 6;BEGINprocess(clk)beginif clear=0 then status=0;elsif (clkevent and clk=1)thenif status=6 then status=1;elsestatusguan=1111110;xuanguan=0110000;xuanguan=1101101;xuanguan=1111001;xuanguan=0110011;xuanguan=1011011;xuanguan=0000000;xuan=111111; END CASE;END PROCESS;END;(2) 循环左滚动:LIBRARY IEEE;USE

20、 IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY move IS PORT( clk,clear:IN STD_LOGIC; guan:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); xuan:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);END move;ARCHITECTURE zuo OF move is SIGNAL l:STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL c:STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL

21、 t,cnt1:INTEGER RANGE 0 TO 5; SIGNAL tmp:INTEGER RANGE 0 TO 1999; signal clk1:STD_LOGIC;BEGIN Fenpin1:PROCESS(clk,clear) BEGIN IF clear=0 THEN tmp=0; ELSIF clkEVENT AND clk=1 THEN IF tmp=1999 THEN tmp=0; ELSE tmp=tmp+1; END IF; END IF; END PROCESS fenpin1; fenpin2:PROCESS(tmp) BEGIN IF clkEVENT AND

22、clk=1 THEN IF tmp1000 THEN clk1=0; ELSE clk1=1; END IF; END IF; END PROCESS fenpin2; change:PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN IF(cnt=5)THENt=0; ELSE t=cnt+1; END IF; END IF; END PROCESS change; P0:PROCESS(clk1) BEGIN IF(clk1EVENT AND clk1=1)THEN IF(cnt1=5)THENt1=0; ELSE t1=cnt1+1; END IF

23、; END IF; END PROCESS p0; P1:PROCESS(cnt,cnt1) BEGIN IF(clear=0)THEN llllllllllllll=0000000; END CASE; END IF; END PROCESS p1; guan=q_temp; p2:PROCESS(cnt) BEGIN IF(clear=0)THEN cccccccc=111111; END CASE; END IF; END PROCESS p2; xuan=count;END zuo; (3) 亮了又熄灭:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;

24、USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY bianhua ISPORT(clk,clear:IN STD_LOGIC;guan:out STD_LOGIC_VECTOR (6 downto 0);xuan:OUT STD_LOGIC_VECTOR(5 downto 0);end bianhua;ARCHITECTURE wei OF bianhua ISsignal tmp:integer range 0 to 5;signal w:integer range 0 to 5;signal s:integer range 0 to 10;signal k:in

25、teger range 0 to 1;signal o:integer range 0 to 6;signal p:integer range -1 to 1;signal clko:std_logic_vector(0 to 5);BEGIN process(clear,clk)beginif clear=0 then tmp=0; w=0; s=0; k=0; o=6; p=-1;elsif (clkevent and clk=1)thenif tmp=5 then tmp=0;w=w+1;elsetmp=tmp+1;end if;if w=6 thenw=o thenclko(i)=1;

26、elsif tmpi thenclko(i)=1;elsif tmpi+1 thenclko(i)=0;elseclko(i)=o thenclko(i)=1;elsif tmpi thenclko(i)=1;elsif tmpi+1 thenclko(i)=0;elseclko(i)=1;end if;end if;end loop;if tmp=5 then o=o+p; end if; if o=0 then k=1; p=1;elsif o=6 then p=-1; k=0; end if;for i in 0 to 5 loopxuan(i)=clko(i);end loop;sguan=0110011; WHEN

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1