vhdl_参考答案_上机练习三:时序逻辑电路设计 2
- 格式:doc
- 大小:42.00 KB
- 文档页数:7
VHDL作业与答案2第5章PPT课件作业1.VHDL程序⼀般包含⼏个组成部分?各部分的作⽤是什么?实体,结构体,库,程序包,配置实体:⽤于描述所设计系统的外部接⼝特性;即该设计实体对外的输⼊、输出端⼝数量和端⼝特性。
结构体:⽤于描述实体所代表的系统内部的结构和⾏为;它描述设计实体的结构、⾏为、元件及内部连接关系。
库:存放已经编译的实体、构造体、程序包集合和配置。
程序包:存放各设计模块都能共享的数据类型、常数和⼦程序库;配置:实体对应多个结构体时,从与某个实体对应的多个结构体中选定⼀个作为具体实现。
2.端⼝模式有哪⼏种?buffer类型与inout类型的端⼝有什么区别?Out, in, inout, bufferout (输出):只能被赋值,⽤于不能反馈的输出;in (输⼊):只能读,⽤于时钟输⼊、控制输⼊单向数据输⼊;inout(输⼊输出) :既可读⼜可被赋值,被读的值是端⼝输⼊值⽽不是被赋值,作为双向端⼝。
buffer(缓冲):类似于输出,但可以读,读的值是被赋值,⽤做内部反馈⽤,不能作为双向端⼝使⽤。
3.下列标识符中,哪些是⾮法的?Led3coder_ _1 end port std_machine2adder decoder*8and_2_ _decoder_1 and2 and_2and_ _2 and-24.指出下⾯的实体描述中存在的四处语法错误并改正LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21a ISPORT( a, b, s : IN BIT ;y : OUT BIT ;) ; (1.删除括号内的分号)END ENTITY mux; (2.改为mux21a)ARCHITECTURE one OF mux21a ISBEGINPROCESS(a,b,s)Beginif s=‘0’then y<=a ;else y<=b ;end if ;end process (结束少了⼀个分号)END ARCHITECTURE none ; (none改为one)5.写出下图所⽰的设计实体mux41的实体声明。
实验三 VHDL 时序逻辑电路设计一、实验目的1.熟悉用VHDL语言设计时序逻辑电路的方法2.熟悉用Quartus文本输入法进行电路设计二、实验所用仪器元件及用途1.计算机:装有Quartus软件,为VHDL语言提供操作场所。
2.直流稳压电源:通过USB接口实现,为实验开发板提供稳定电源。
3.数字系统与逻辑设计实验开发板:使试验结果下载到开发板上,实现整个实验的最终结果。
三、实验内容1.用VHDL语言设计实现一个8421码十进制计数器。
(1)实验内容及要求:在Quartus平台上设计程序和仿真题目要求,并下载到实验板上验证试验结果。
(2)试验结果:VHDL代码和仿真结果。
2.用VHDL语言设计实现一个分频系数为8,分频输出信号占空比为50%的分频器。
(1)实验内容及要求:在Quartus平台上设计程序和仿真题目要求。
(2)试验结果:VHDL代码和仿真结果。
3.用VHDL语言设计实现一个控制8个发光二极管亮灭的电路。
(1)实验内容及要求:在Quartus平台上设计程序和仿真题目要求,并下载到实验板上验证试验结果。
a.单点移动模式:一个点在8个发光二极管上来回的亮b.幕布式:从中间两个点,同时向两边依次点亮直至全亮,然后再向中间点灭,依次往复c.通过拨码开关或按键控制两种模式的转换(2)试验结果:VHDL代码和仿真结果。
四、实验设计思路及过程1.8421码十进制计数器状态转移表左图为8421码十进制计数器的状态转移表,abcd为初状态,ABCD为下一状态,每当有“1”出现时,相应的管脚就亮灯,从而从0000到1001的灯依次出现。
VHDL代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count12 ISPORT(clk,clear:IN STD_LOGIC;q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END count12;ARCHITECTURE a OF count12 ISSIGNAL q_temp:ATD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk)BEGINIF(clk'event and clk='1') THENIF clear='0' THENq_temp<="0000";ELSIF q_temp="1011"THENq_temp<="0000";ELSEq_temp<=q_temp+1;END IF;END IF;END PROCESS;q<=q_temp;END a;2.分频系数为8,输出占空比为50%的分频器的设计左图为八分频器(占空比50%)的状态转移图,其中abc为原状态,ABC为下一状态。
第五章时序逻辑电路练习题及答案[]分析图时序电路的逻辑功能,写出电路的驱动方程、状态方程和输出方程,画出电路的状态转换图,说明电路能否自启动。
图[解]驱动方程:丿广心=2, 状态方程:Q;J00" +型0 =型㊉G:厶=©=©, er = +Q-Q"=0 ㊉er ;、=Q、QJ 电Q;Q:l人=G0,K输出方程:Y = Q^由状态方程可得状态转换表,如表所示;由状态转换表可得状态转换图,如图所示。
电路可以自启动。
表[]试分析图时序电路的逻辑功能,写出电路的驱动方程、状态方程和输出方程,画出电路的状态转换图。
A为输入逻辑变量。
>C1il1D|y >ci p-1CP1Q2 图[解] _驱动方程:D] = AQ2, D2 = AQ.Q 2状态方程:ft"1 = , 0广=4議=4(0;'+0")由状态方程可得状态转换表,如表所示;由状态转换表町得状态转换图,如图所示。
电路的逻辑功能是:判断A是否连续输入四个和四个以上“1” 信号,是则Y=l,否则Y=0。
Q2Q1 A/Y 佗0Y0 0 00 10 0 0 1 1 00 0 1 0 1 100 1 10 011 0 0 1 11 1 1 1 1 00 1 1 00 10 1 0 10 00[] 试分析图时序电路的逻辑功能,写出电路的驱动方程、状态方程和输出方程,画出电路的状态转换图,检查电路能否自启动。
r-0Q1 TF1^=>C1 IK O->C11KCP [解]J严殛3, K严1;J2=Q lt K严玆;=巫・g ;er1 = ae2+me2;丿3 = Q1Q29位=Q2 Qr=Q.QA^QAY= O2O3电路的状态转换图如图所示,电路能够自启动。
Q3Q2Q1 /Y表[] 分析图给岀的时序电路,画岀电路的状态转换图,检查电路能否自启动,说明电 路实现的功能。
A 为输入变量。
时序逻辑电路设计题-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN第1题: 设计一个串行数据检测器,对它的要求是:连续输入3个或3个以上的1时输出为1,其他输入情况下输出为0。
答案输入数据作为输入变量,用X 表示;检测结果为输出变量,用Y 表示。
设电路没有输入1以前的状态为0S ,输入一个1状态为1S ,连续输入两个1后的状态为2S ,连续输入3个1以后的状态为3S 。
状态转换图为:求得触发器的输入方程为:X K XQ J ==101; 1;010==K Q X J 输出方程:1XQ Y = 画出逻辑图第2题: 试用JK 触发器和门电路设计一个同步七进制计数器。
答案因为七进制计数器需要有7个不同的状态,所以需要用三个触发器组成。
根据题目要求画出状态转换图:卡诺图为:从卡诺图得到的状态方程为:驱动方程为:设计得到的逻辑电路图为:第3题:设计一“011”序列检测器,每当输入011码时,对应最后一个1,电路输出为1。
答案画出原始状态图(或称转移图)输入端X:输入一串行随机信号输出端Z:当X出现011序列时,Z=1;否则Z=0选用T触发器表达式为:A BCD1/00/00/01/10/00/01/01/011XQQT+=XQQXT+=T触发器的驱动方程为:第4题:用JK触发器设计时序逻辑电路,状态表如下所示:nn QQ1YQQ nn/111++A=0A=10001/011/00110/000/01011/001/01100/110/1答案所要设计的电路由4个状态,需要用两个JK触发器实现,求得JK触发器的激励方程为:1==KJ11QAKJ⊕==输出方程:1QQY=由输出方程和激励方程画电路1QXQZ=11XQQT+=XQQXT+=Z=。
VHDL程序填空题(一) 在下面横线上填上合适的VHDL关键词,完成2选1多路选择器的设计。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;1 MUX21 ISPORT(SEL:IN STD_LOGIC;A,B:IN STD_LOGIC;Q: OUT STD_LOGIC );END MUX21;2 BHV OF MUX21 ISBEGINQ<=A WHEN SEL=’1’ EL SE B;END BHV;(二) 在下面横线上填上合适的语句,完成BCD-7段LED显示译码器的设计。
LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY BCD_7SEG ISPORT( BCD_LED : IN STD_LOGIC_VECTOR(3 DOWNTO 0);LEDSEG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END BCD_7SEG;ARCHITECTURE BEHAVIOR OF BCD_7SEG ISBEGINPROCESS(BCD_LED)3IF BCD_LED="0000" THEN LEDSEG<="0111111";ELSIF BCD_LED="0001" THEN LEDSEG<="0000110";ELSIF BCD_LED="0010" THEN LEDSEG<= 4 ;ELSIF BCD_LED="0011" THEN LEDSEG<="1001111";ELSIF BCD_LED="0100" THEN LEDSEG<="1100110";ELSIF BCD_LED="0101" THEN LEDSEG<="1101101";ELSIF BCD_LED="0110" THEN LEDSEG<="1111101";ELSIF BCD_LED="0111" THEN LEDSEG<="0000111";ELSIF BCD_LED="1000" THEN LEDSEG<="1111111";ELSIF BCD_LED="1001" THENLEDSEG<="1101111";ELSE LEDSEG<= 5 ;END IF;END PROCESS;END BEHAVIOR;(三) 在下面横线上填上合适的语句,完成数据选择器的设计。
vhdl_参考答案_上机练习三:时序逻辑电路设计2VHDL与复杂数字系统设计上机实验3:时序逻辑电路的VHDL程序设计⼀、实验⽬的:1.掌握在Max+plus II开发平台上,使⽤硬件描述语⾔设计电路的基本操作步骤;2.运⽤所学VHDL的描述语句完成⼀种时序逻辑电路的设计。
⼆、要点:时序逻辑电路在电路结构上有两个显著特点:第⼀,时序电路通常包含组合电路和存储电路两个组成部分,⽽且存储电路是必不可少的。
第⼆,存储电路的输出状态必须反馈到组合电路的输⼊端,与输⼊信号⼀起,共同决定组合逻辑电路的输出。
时序电路的信号变化特点:时序电路以时钟信号为驱动;电路内部信号的变化(或输出信号的变化)只发⽣在特定的时钟边沿;其他时刻输⼊信号的变化对电路不产⽣影响;要点:执⾏条件的控制;时钟边沿的检测;1、执⾏条件的控制采⽤进程描述可以有效控制执⾏条件,若进程以时钟信号(clk)为唯⼀敏感信号,则只有当时钟信号变化时,进程才执⾏;在其他时刻,任何输⼊信号的变化对电路(进程)不起作⽤;模版1:process(clock) --敏感信号表中只有时钟beginif rising_edge(clock) then--监测时钟上升沿,若⽤falling_edge(clock) ……--则监测时钟下升沿。
end if;end process;例:时钟上升沿动作的D触发器library ieee;use ieee.std_logic_1164.all;entity dff1 isport(clk, d: in std_logic;q: out std_logic);end dff1;architecture rtl of dff1 isbeginprocess(clk)beginif (clk'event and clk='1') thenq<=d;end if;end process;end rtl;时序逻辑电路的初始状态应由复位(或清零)信号来设置,根据复位信号对时序逻辑电路复位操作的不同,可分为同步复位和异步复位。
VHDL与复杂数字系统设计上机实验3:时序逻辑电路的VHDL程序设计一、实验目的:1.掌握在Max+plus II开发平台上,使用硬件描述语言设计电路的基本操作步骤;2.运用所学VHDL的描述语句完成一种时序逻辑电路的设计。
二、要点:时序逻辑电路在电路结构上有两个显著特点:第一,时序电路通常包含组合电路和存储电路两个组成部分,而且存储电路是必不可少的。
第二,存储电路的输出状态必须反馈到组合电路的输入端,与输入信号一起,共同决定组合逻辑电路的输出。
时序电路的信号变化特点:时序电路以时钟信号为驱动;电路内部信号的变化(或输出信号的变化)只发生在特定的时钟边沿;其他时刻输入信号的变化对电路不产生影响;要点:执行条件的控制;时钟边沿的检测;1、执行条件的控制采用进程描述可以有效控制执行条件,若进程以时钟信号(clk)为唯一敏感信号,则只有当时钟信号变化时,进程才执行;在其他时刻,任何输入信号的变化对电路(进程)不起作用;模版1:process(clock) --敏感信号表中只有时钟beginif rising_edge(clock) then--监测时钟上升沿,若用falling_edge(clock) ……--则监测时钟下升沿。
end if;end process;例:时钟上升沿动作的D触发器library ieee;use ieee.std_logic_1164.all;entity dff1 isport(clk, d: in std_logic;q: out std_logic);end dff1;architecture rtl of dff1 isbeginprocess(clk)beginif (clk'event and clk='1') thenq<=d;end if;end process;end rtl;时序逻辑电路的初始状态应由复位(或清零)信号来设置,根据复位信号对时序逻辑电路复位操作的不同,可分为同步复位和异步复位。
同步复位:复位信号有效,并且在给定的时钟边沿到来时,触发器才被复位。
同步复位在以时钟为敏感信号的进程中定义,且用if 语句来描述复位条件。
模版2:process(clock) --敏感信号表中只有时钟信号beginif rising_edge(clock) then--监测时钟边沿if (reset_condition) then --监测同步复位信号的电平值signal_out<=reset_value;elsesignal_out<= signal_in;……end if;end if;end process;异步复位:复位信号一旦有效,时序逻辑电路立即回到初始状态。
为实现异步复位,进程敏感信号表中时钟信号clk、复位信号reset同时存在;用if语句描述复位条件;在elsif段描述时钟边沿的条件。
模版3:process(clock, reset) --敏感信号表中只有时钟和复位信号beginif(reset_condition) then --监测异步复位信号的电平值……elsif rising_edge(clock) then--监测时钟上升沿,若用falling_edge(clock)……--则监测时钟下升沿。
end if;end process;例:异步清零D触发器process( clk,clr )beginif (clr = ‘0’ ) thenq<='0';elsif (clk'event and clk='1') thenq<=d;end if;end process;注:进程的敏感信号有时也可以采用wait语句替代。
2、时钟边沿的检测为了确保电路状态只在时钟的特定边沿(上升/下降)发生变化,需要对时钟边沿进行检测;VHDL通常采用属性语句检测时钟边沿;与时钟有关的属性语句:clk'event boolean clk有变化时为true;clk'last_value clk在变化之前的值;例:上升沿的检测:clk'event and clk='1' ;clk'event and clk'last_value='0' ;在由上升沿导致的进程执行时,上述两个表达式的值都为true;利用这种表达式构成条件语句中的关系判断,就可以保障电路状态在特定边沿变化;三、实验任务:从下列各题中任选一题完成。
要求给出完整的VHDL语言程序,程序应包括:库和包集合说明(必要时)、实体和结构体;若使用了元件,要给出底层元件的VHDL语言描述;对程序进行编译、调试;对所设计电路进行功能仿真,给出仿真波形文件;进行适当分析。
1.设计一个D锁存器,说明它与D触发器的区别,它们的区别具体是怎样在程序中体现的。
按照如下引脚框图进行端口说明。
1) 程序2) 仿真波形3) 时序分析2.设计一个16位的寄存器,带有异步清零、时钟使能控制和输出三态控制功能。
各引脚功能如下:CLK: 寄存器的时钟信号;D[1..16]:输入需寄存的数据;CLKEN: 时钟信号使能,在时钟条件满足的情况下,CLKEN为高电平时,存储数据D[1..16];CLR:异步清零,高电平有效;OE:输出使能,为高电平时,寄存数据从端口Q[1..16]输出,否则,端口Q[1..16]呈高阻态。
Q[1..16]:寄存器数据输出;1) 程序2) 仿真波形(需反映出CLKEN、OE信号、CLR 信号对于电路状态的影响)3) 时序分析(电路工作频率、建立保持时间、延迟时间分析)3. 设计一个4位二进制计数器74163,它具有同步清零、同步置数、计数控制和进位输出控制功能。
各端口功能如下:CLK:时钟信号,上升沿计数;CLRL:同步清零端,低电平有效;LDL:同步置位控制端,低电平有效;ENP:与ENT同时为‘1’时,计数使能;ENT:为‘1’时,可进行进位;D[3..0]:计数器置数输入;Q[3..0]:计数器状态输出;RCO:计数器进位输出。
1) 程序2) 仿真波形(需反映出LDL 、ENT 、ENP 、CLRL对电路状态的影响)3) 时序分析(电路工作频率、建立保持时间、延迟时间分析)四、参考答案:1. D锁存器library ieee;use ieee.std_logic_1164.all;entity kdlatch isport ( d,clk: in std_logic;q: out std_logic);end kdlatch;architecture beh of kdlatch isbeginprocess(clk,d)beginif clk='1' then q<=d;end if;end process;end beh;2. 16位寄存器library ieee;use ieee.std_logic_1164.all;entity kreg16 isport ( clk,clken,oe,clr: in std_logic;d:in std_logic_vector(1 to 16);q: out std_logic_vector(1 to 16)); end kreg16;architecture beh of kreg16 issignal iq: std_logic_vector(1 to 16); beginprocess ( clk,clr,oe,iq)beginif clr='1' then iq<=(others=>'0');elsif clk'event and clk='1' thenif clken = '1' then iq<=d;end if;end if ;if oe='1' then q <= iq;else q<=(others=>'Z');end if;end process ;end beh;3. 4位二进制计数器74163library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity k74163 isport ( clk, clrl, ldl, enp, ent: in std_logic;d: in std_logic_vector(3 downto 0);q: out std_logic_vector(3 downto 0);rco: out std_logic );end k74163;architecture beh of k74163 issignal iq: std_logic_vector(3 downto 0); beginprocess (clk, ent)beginif clk'event and clk='1' thenif clrl='0' then iq<= (others=>'0');elsif ldl='0' then iq<=d;elsif (ent and enp)='1' then iq<=iq+1;end if;end if;if (iq=15) and (ent='1') then rco<='1';else rco<='0';end if;q<=iq;end process;end beh;。