1、(2)用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号;(3)用3线-8线译码器(74LS138)和逻辑门设计实现函数F=,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。原理图及仿真波形图:(1)半加器原理图:仿真波形图:分析:S=ab;C=ab其中a,b为输入端,C为进位端,S为本位和,当ab=000110时不用进位,故C=0,当ab=11时需要进位使得C=1,S=0。(2)全加器Si=AiBiCi-1;Ci=AiBi+Ci-1(AiBi)全加器与半加器的
2、不同在于,全加器需要考虑低位的进位,而半加器不需要。因而对于全加器,Ai、Bi为加数和被加数,Ci-1为低位的进位,Ci为进位,Si为本位和,实质上相当于Ai+Bi+Ci-1,满2进1,Ci为进位,Si为本位和。(3)译码器又有要实现的功能为F=,又根据74LS138的使用原理可得图示的连接方法。实验二:用VHDL设计与实现组合逻辑电路(1)熟悉用VHDL语言设计组合逻辑电路的方法;(2)熟悉用Quartus文本输入法进行电路设计;(3)熟悉不同的编码及其之间的转换。(1)用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,7段数码
3、管显示输出信号;(2)用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号;(3)用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个1时,输出为1,否则输出为0,仿真验证其功能,并下载到实验板测试。VHDL代码及仿真波形图:(1)数码管译码器VHDL代码: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(
4、6 downto 0);end seg7_1;ARCHITECTURE seg7_1_arch OF seg7_1 ISBEGINPROCESS(a)CASE a IS WHEN0000 = b b bend case;end process;end;余三码实际为8421码加上3的结果,可以用case列举的方式,也可以用加号,但需要加上相应的库(3)奇校验器entity THREE isout std_logic_vector(0 downto 0)end THREE;architecture THREE_arch of THREE is01-10-11-121101-131110-14111
5、1-15实验三:用VHDL设计与实现时序逻辑电路(1)熟悉用VHDL语言设计时序逻辑电路的方法;(3)熟悉计数器和分频器的设计与应用。(1)用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证其功能,并下载到实验板测试。要求用按键设定输入信号,发光二极管显示输出信号;(2)用VHDL语言设计实现一个分频系数为12,分频输出信号占空比为50%的分频器,要求在Quartus平台上设计程序并仿真验证设计;(3)将(1)(2)和数码管译码器三个电路进行连接,并下载到实验板显示计数结果。VHDL代码、仿真波形图、模块端口说明:(1)计数器use ieee.std_logic_arith
6、.all;entity count_10 is clk,clear:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END count_10;architecture a of count_10 issignal cn:integer range 0 to 10;process(clk)IF (clear=0OR cn=10) THENcn=0;ELSIF(clkevent AND clk=1)THEN=cn+1;ELSE cn=cn;END IF; q=CONV_STD_LOGIC_VECTOR(cn,4);END a;输入为时钟信号和复位信
7、号。由于是异步复位,所以复位信号的优先级最高。当复位信号为0时,输出变为0000;当复位信号为1时,每当遇到时钟上升沿,输出状态加1,实现加计数,计数循环为00001010,其中1010与0000占用同一个周期的clk,因此输出波形会出现“芒刺”。(2)分频器USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY div_12 IS clk : clear : clk_out:OUT STD_LOGIC);END div_12;ARCHITECTURE a OF div_12 ISSIGNAL tmp:INTEGER RANGE 0 TO 5;SIGNAL clktmp:STD_LOGIC;PROCESS(clear,clk)IF clear = THEN tmpELSIF clk IF tmp = 5 THENclktmp=NOT clktmp; ELSE tmp =tmp+1; END IF;clk_out=clktmp;在本段设计中,clear=0不再是简单的清零操作,而是重新计算clk数目的操作,当出现clear=0时,将会重新计算6个时钟周期,再进行输出状态的翻转。(3)计时器与分频器的连接ENTITY the IS
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1