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;时序逻辑电路的初始状态应由复位(或清零)信号来设置,根据复位信号对时序逻辑电路复位操作的不同,可分为同步复位和异步复位。
第1章绪论1.1电子设计自动化1.2EDA技术,是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术。
1.31、用软件的方式设计硬件。
2、用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的。
3、设计过程中可用有关软件进行各种仿真。
4、系统可现场编程,在线升级。
5、整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。
因此,EDA技术是现代电子设计的发展趋势。
1.4可编程逻辑器件(Programmable Logic Device,PLD)是一种由用户编程以实现某种逻辑功能的新型逻辑器件。
FPGA和CPLD分别是现场可编程门阵列和复杂可编程逻辑器件的简称。
1.51、自顶向下设计方法是一种模块化设计方法。
它对设计的描述从上到下,逐步由粗略到详细,符合常规的逻辑思维习惯。
由于高层设计与器件无关,设计易于在各种集成电路工艺或可编程器件之间移植。
2、适合多个设计者同时进行设计。
随着技术的不断进步,许多设计由一个设计者已无法完成,而必须经过多个设计者分工协作来完成。
在这种情况下,应用自顶向下的设计方法便于多个设计者同时进行设计,对设计任务进行合理分配,并用系统工程的方法对设计进行管理。
第2章可编程逻辑器件2.1按结构的复杂程度分类、按互连结构分类、按可编程特性分类、按可编程器件的编程元件分类2.2主动串行配置式、主动并行配置模式、外设配置模式、从动串行配置模式、菊花链配置模式2.31、编程单元。
查找表型FPGA的编程单元为SRAM结构,可以无限次编程,但它属于易失性元件,掉电后芯片内的信息会丢失;而CPLD则采用EEPROM编程单元,不仅可无限次编程,且掉电后片内的信息不会丢失。
5-1分析图所示时序电路的逻辑功能,写出电路的驱动方程、状态方程和输出方程, 画出电路的状态转换图和时序图。
解:从给定的电路图写出驱动方程为:D o (Q 0Q i n)e Q 2D i Q 01D 2 Q i nQ 01 1(Q 0Q n)eQ ;Q i n 1Q 0Q 21Q ;由电路图可知,输出方程为Z Q ;CLK将驱动方程代入D 触发器的特征方程Q n 1D ,得到状态方程为:5-1(a )所示,时序图如图题解Z图题5-1图根据状态方程和输出方程,画出的状态转换图如图题解题解5-1(a )状态转换图综上分析可知,该电路是一个四进制计数器。
5-2分析图所示电路的逻辑功能,写出电路的驱动方程、状态方程和输出方程,画出电路的状态转换图。
A 为输入变量。
解:首先从电路图写出驱动方程为:D o A& D i A Qg :A (Q : Q i n)将上式代入触发器的特征方程后得到状态方程Q 0 1AQ :Q :1 AQ 0Q :A (Q nQ :)电路的输出方程为:CLKQ i12345——-A1 11 t----------- 1------------ 1|| 1 » 1 1 1----------- 1 ---------- 1 --------------►CLK0 Q 2/Z 仝题解5-1(b )时序图0 Q o 胃AY图题5-2图丫AQoQ;根据状态方程和输出方程,画出的状态转换图如图题解5-2 所示综上分析可知该电路的逻辑功能为:当输入为0时,无论电路初态为何,次态均为状态" 00”,即均复位;当输入为1时,无论电路初态为何,在若干CLK 的作用下,电路最终回到状态“10”。
5-3已知同步时序电路如图(a )所示,其输入波形如图 (b )所示。
试写出电路的驱动方 程、状态方程和输出方程,画出电路的状态转换图和时序图,并说明该电路的功能。
CLK 1 2345678(b )输入波形 图题5-3图解:电路的驱动方程、状态方程和输出方程分别为:J 。
第十三章时序逻辑电路习题及答案一、填空题1、数字逻辑电路常分为组合逻辑电路和两种类型。
2、时序逻辑电路是指任何时刻电路的稳定输出信号不仅与当时的输入信号有关,而且与有关。
3、时序逻辑电路由两大部分组成。
4、时序逻辑电路按状态转换来分,可分为两大类。
5、时序逻辑电路按输出的依从关系来分,可分为两种类型。
6、同步时序电路有两种分析方法,一种是另一种是。
7、同步时序电路的设计过程,实为同步时序电路分析过程的过程。
8、计数器种类繁多,若按计数脉冲的输入方式不同,可分两大类。
9、按计数器进制不同,可将计数器分为。
10、按计数器增减情况不同,可将计数器分。
11、二进制计数器是逢二进一的,如果把n个触发器按一定的方式链接起来,可枸成。
12、一个十进制加法计数器需要由 J-K触发器组成。
13、三个二进制计数器累计脉冲个数为;四个二进制计数器累计脉冲个数为。
14、寄存器可暂存各种数据和信息,从功能分类,通常将寄存器分为。
15、数码输入寄存器的方式有;从寄存器输出数码的方式有。
16、异步时序逻辑电路可分为和。
17、移位寄存器中,数码逐位输入的方式称为。
18、计数器可以从三个方面进行分类:按__ _ _方式,按_________________方式,按______________方式。
19、三位二进制加法计数器最多能累计__个脉冲。
若要记录12个脉冲需要___个触发器。
20、一个四位二进制异步加法计数器,若输入的频率为6400H Z,在3200个计数脉冲到来后,并行输出的频率分别为______H Z,_____ H Z,____ H Z,_____ H Z。
一个四位二进制加法计数器起始状态为1001,当最低位接收到4个脉冲时,各触发器的输出状态是:Q0为__;Q1为__;Q2为__;Q3为__。
21、时序逻辑电路的特点是:任意时刻的输出不仅取决于______________,而且与电路的______有关。
22、寄存器一般都是借助有________功能的触发器组合起来构成的,一个触发器存储____二进制信号,寄存N位二进制数码,就需要__个触发器。
第六章时序逻辑电路【题】 分析图时序电路的逻辑功能,写出电路的驱动方程、状态方程和输出方 程,画出电路的状态转换图,说明电路能否自启动。
电路能自启动。
状态转换图如图【题】分析图时序电路的逻辑功能,写出电路的驱动方程、 状态方程和输出方程,画出电路的状态转换图。
A 为输入逻辑变量。
【解】驱动 J i 二K i 二Q 3J 方程:J 2=K 3=Q1J 3= Q 1Q 2;K 3= Q3输出方程: Y Q 3将驱动方程带入 状态方程为:JK 触发器的特性方程后得到—n+1——Q iQ 3Q 1 Q 3Q 1Q 3 e Q i Q ; 1 Q 1Q 2 Q i Q 2Q 2Q i—n+1—Q 3 Q 3Q 2Q i图 A6.3Y图 P6.3图P6.5【解】D i AQ2驱动方程:一一D? AQ1Q2 A(Q i Q2)输出方程:Y AQ2Q1将驱动方程带入JK触发器的特性方程后得到状态方程为n+1Q i n 1 AQ2Q;+1 A(Q i Q2)电路的状态转换图如图图A6.5【题】分析图时序电路的逻辑功能,画出电路的状态转换图,检查电路能否自启动,说明电路能否自启动。
说明电路实现的功能。
A为输入变量。
输出方程:Y AQ 1Q 2 AQ 1Q 2将驱动方程带入JK 触发器的特性方程后得到状态方程为 :Q n+1 Q 1 Q 211 A Q 1 Q 2电路状态转换图如图。
A = 0时作二进制加法计数, A = 1时作二进制减法计数。
【题】 分析图时序电路的逻辑功能,写出电路的驱动方程、状态方程和输出方 程,画出电路的状态转换图,说明电路能否自启动。
【解】驱动方程J i K i 1J 2 K 2 AQ 1YCLK输出方程:Y Q o QQ z Q s将驱动方程带入JK触发器的特性方程后得到状态方程为Q o Q oQ1 Q0Q1 (Q2 Q3) Q0Q1Q;Q0Q2Q3 (Q0 Q1 )Q2Q3 Q0Q Q2Q3 Q0Q3 Y图P6.7【解】驱动方程J1 Q0 ? Q2Q3 ; K1 Q0Q0Q3;K2Q0Q1 Q0Q1Q2;KQ oCLK设初态QQQQ Q o=OOOO,由状态方程可得:状态转换表初态次态输出*** * * *Q3 Q Q Q Q Q Q Q Y0 0 0 0 10 0 1 10 0 0 1 0 0 0 0 00 0 10 0 0 0 1 00 0 11 0 0 10 00 10 0 0 0 11 00 10 1 0 10 0 00 110 0 10 1 00 111 0 110 010 0 0 0 111 010 0 1 10 0 0 010 10 0 10 1 010 11 10 10 0110 0 0 0 11 0110 1 110 0 01110 0 10 1 01111 1110 0状态转换图如图。
《EDA技术与VHDL基础》课后习题答案第一章EDA技术概述一、填空题1、电子设计自动化2、非常高速集成芯片硬件描述语言3、CAD、CAE、EDA4、原理图输入、状态图输入、文本输入5、VHDL、Verilog HDL6、硬件特性二、选择题1、A2、C3、A4、D5、C6、D7、A第二章可编程逻辑器件基础一、填空题1、PLD2、Altera公司、Xilinx公司、Lattice公司3、基于反熔丝编程的FPGA4、配置芯片二、选择题1、D2、C3、C4、D第三章VHDL程序初步——程序结构一、填空题1、结构、行为、功能、接口2、库和程序包、实体、结构体、配置3、实体名、类型表、端口表、实体说明部分4、结构体说明语句、功能语句5、端口的大小、实体中子元件的数目、实体的定时特性6、设计库7、元件、函数8、进程PROCESS、过程PROCEDURE9、顺序语句、并行语句二、选择题1、D2、C3、C4、B5、D6、B7、A8、C三、简答题2、LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY nand_3in ISPORT(a,b,c:IN STD_LOGIC;y:OUT STD_LOGIC);END;ARCHITECTURE bhv OF nand_3in ISBEGINy<=NOT(a AND b AND c);END bhv;5、00006、11110111(247)第四章VHDL基础一、填空题1、顺序语句、并行语句2、跳出本次循环3、等待、信号发生变化时4、函数、过程5、值类属性、函数类属性、信号类属性、数据类型类属性、数据范围类属性6、程序调试、时序仿真7、子程序、子程序二、选择题1、B2、A3、A4、C5、B6、C7、D三、判断题1、√2、√3、√4、√5、×6、×四、简答题9、修改正确如下所示:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY count ISPORT(clk:IN BIT;q:OUT BIT_VECTOR(7 DOWNTO 0)); END count;ARCHITECTURE a OF count ISBEGINPROCESS(clk)IF clk'EVENT AND clk='1' THENq<=q+1;END PROCESS;END a;10、修改正确如下所示:…SIGNAL invalue:IN INTEGER RANGE 0 TO 15; SIGNAL outvalue:OUT STD_LOGIC;…CASE invalue ISWHEN 0=>outvalue<='1';WHEN 1=>outvalue<='0';WHEN OTHERS=>NULL;END CASE;…11、修改正确如下所示:ARCHITECTURE bhv OF com1 ISBEGINSIGNAL a,b,c:STD_LOGIC;pro1:PROCESS(clk)BEGINIF NOT (clk'EVENT AND clk='1') THENx<=a XOR b OR c;END IF;END PROCESS;END;12、(1) PROCESS(…) --本题中两条IF语句均为信号c进行可能赋值,VHDL语言不允许IF a=b THENc<=d;END IF;IF a=4 THENc<=d+1;END IF;END PROCESS;(2)ARCHITECTURE behave OF mux IS --同时为q进行多次可能赋值,VHDL语言不允许BEGINq<=i0 WHEN a='0' AND b='0' ELSE '0'; --WHEN ELSE语句语法错误q<=i1 WHEN a='0' AND b='1' ELSE '0';q<=i2 WHEN a='1' AND b='0' ELSE '0';q<=i3 WHEN a='1' AND b='1' ELSE '0';END behave;13、next1<=1101 WHEN (a='0' AND b='0') ELSEd WHEN a='0' ELSEc WHEN b='1' ELSE1011;15、(1)、STD_LOGIC_UNSIGNED(2)、GENERIC(3)、IN(4)、width-1(7)(5)、counter_n(6)、“00000000”(7)、clk’EVENT AND clk=’1’(8)、ELSIF(9)、END IF(10)、q<= count16、修改正确如下所示:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CNT10 ISPORT ( clk: IN STD_LOGIC;q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END CNT10;ARCHITECTURE bhv OF CNT10 ISSIGNAL q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS (clk)BEGINIF RISING_EDGE(clk) begin –begin修改为THENIF q1 < 9 THEN --q1为STD_LOGIC数据类型,而9为整型不可直接比较q1 <= q1 + 1; -- q1为STD_LOGIC数据类型,而1为整型不可直接相加ELSEq1 <= (OTHERS => '0');END IF;END IF;END PROCESS;q <= q1;END bhv;17、使用IF语句实现LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21 ISPORT(ain,bin,sel:IN STD_LOGIC_VECTOR(1 DOWNTO 0);cout:OUT STD_LOGIC_VECTOR(1 DOWNTO 0));END;ARCHITECTURE bhv OF mux21 ISSIGNAL cout_tmp:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINPROCESS(ain,bin,sel)BEGINIF (sel="00") THEN cout_tmp<=ain OR bin;ELSIF (sel="01") THEN cout_tmp<=ain XOR bin;ELSIF (sel="10") THEN cout_tmp<=ain AND bin;ELSE cout_tmp<=ain NOR bin;END IF;END PROCESS;cout<=cout_tmp;END bhv;第五章QuartusⅡ集成开发软件初步一、填空题1、实体名2、FPGA、CPLD3、.vhd4、输入、综合、适配、仿真、下载5、RTL Viewer、Technology Map Viewer6、功能、参数含义、使用方法、硬件描述语言、模块参数设置7、mif、hex8、根目录二、选择题1、C2、D第七章有限状态机设计一、设计题1、LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ztj ISPORT(clk,reset:IN STD_LOGIC;in_a:IN STD_LOGIC_VECTOR(1 DOWNTO 0);out_a:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END;ARCHITECTURE bhv OF ztj ISTYPE state IS(s0,s1,s2,s3); --用枚举类型定义状态,简单直观SIGNAL current_state,next_state:state; --定义存储现态和次态的信号BEGINp1:PROCESS(clk) --状态更新进程BEGINIF clk'EVENT AND clk='1' THENIF reset='1' THEN current_state<=s0;ELSE current_state<=next_state;END IF;END IF;END PROCESS;p2:PROCESS(current_state,in_a) --次态产生进程BEGINCASE current_state ISWHEN s0=>IF in_a/=”00” THEN next_state<=s1;ELSE next_state<=s0;END IF;WHEN s1=>IF in_a=/'”01” THEN next_state<=s2;ELSE next_state<=s1;END IF;WHEN s2=>IF in_a=”11” THEN next_state<=s0ELSE next_state<=s3;END IF;WHEN s3=>IF in_a/='11' THEN next_state<=s0;ELSE next_state<=s3;END IF;WHEN OTHERS=>NULL;END CASE;END PROCESS;p3:PROCESS(current_state)BEGINCASE current_state ISWHEN s0=>out_a<='”0101”;WHEN s1=>out_a<=”1000”;WHEN s2=>out_a<=”1100”;WHEN s3=>out_a<=”1101”;WHEN OTHERS=>NULL;END CASE;END PROCESS;END;2、LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ztj ISPORT(clk,reset:IN STD_LOGIC;ina:IN STD_LOGIC_VECTOR(2 DOWNTO 0);outa:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END;ARCHITECTURE bhv OF ztj ISTYPE state IS(s0,s1,s2,s3); --用枚举类型定义状态,简单直观SIGNAL current_state,next_state:state;BEGINp1:PROCESS(clk) --状态更新进程BEGINIF clk'EVENT AND clk='1' THENIF reset='1' THEN current_state<=s0;ELSE current_state<=next_state;END IF;END IF;END PROCESS;p2:PROCESS(current_state,ina)BEGINCASE current_state ISWHEN s0=> IF ina =”101” THEN outa<=”0010”;ELSIF ina=”111” THEN outa <=”1100”;END IF;IF ina =”000” THEN next_state<=s1;ELSE next_state<=s0;END IF;WHEN s1=> outa<=”1001”;IF ina =”110” THEN next_state<=s2;ELSE next_state<=s1;END IF;WHEN s2=> outa<=”1111”;IF ina =”011” THEN next_stat e<=s1;ELSIF ina =”100” THEN next_state<=s2;ELSE next_state<=s3;END IF;WHEN s3=> IF ina =”101” THEN outa<=”1101”;ELSIF ina=”011” THEN outa <=”1100”;END IF;IF ina =”010” THEN next_state<=s0;ELSE next_state<=s1;END IF;WHEN OTHERS=>NULL;END CASE;END PROCESS;END;3、LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ztj ISPORT(clk,reset:IN STD_LOGIC;ina:IN STD_LOGIC_VECTOR(1 DOWNTO 0);outa:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END;ARCHITECTURE bhv OF ztj ISTYPE state IS(s0,s1,s2,s3); --用枚举类型定义状态,简单直观SIGNAL state:istate;BEGINp1:PROCESS(clk)BEGINIF clk'EVENT AND clk='1' THENIF reset='1' THEN state<=s0;result<='0';ELSECASE state ISWHEN s0=>outa<=”0000”;IF ina=”00” THEN state<=s1;ELSE state<=s0;END IF;WHEN s1=> outa <=”0001”;IF ina=”01” THEN state<=s2;ELSE state<=s1;END IF;WHEN s2=> outa <=”1100”;IF ina=”11” THEN state<=s3;ELSE state<=s0;END IF;WHEN s3=> outa <=”1111”;IF ina=”00” THEN state<=s0;ELSE state<=s3;END IF;WHEN OTHERS=>NULL;END CASE;END IF;END IF;END PROCESS;END;第九章VHDL基本逻辑电路设计一、填空题1、输入信号、所处状态2、组合逻辑、时序逻辑3、触发器、14、D触发器、RS触发器、JK触发器、T触发器二、选择题1、A2、C。
第3章 VHDL基础3-1:画出与下例实体描述对应的原理图符号元件:ENTITY buf3s IS -- 实体1:三态缓冲器PORT (input : IN STD_LOGIC ; -- 输入端enable : IN STD_LOGIC ; -- 使能端output : OUT STD_LOGIC ) ; -- 输出端END buf3x ;ENTITY mux21 IS --实体2: 2 选1 多路选择器PORT (in0, in1, sel : IN STD_LOGIC;output : OUT STD_LOGIC);3-1.答案3-2. 图3-30 所示的是4 选1 多路选择器,试分别用IF_THEN 语句和CASE 语句的表达方式写出此电路的VHDL 程序。
选择控制的信号s1 和s0 的数据类型为STD_LOGIC_VECTOR;当s1='0',s0='0';s1='0',s0='1';s1='1',s0='0'和s1='1',s0='1'分别执行y<=a、y<=b、y<=c、y<=d。
3-2.答案LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX41 ISPORT(s:IN STD_LOGIC_VECTOR(1 DOWNTO 0); --输入选择信号a,b,c,d:IN STD_LOGIC; --输入信号y:OUT STD_LOGIC);--输出端END ENTITY;ARCHITECTURE ART OF MUX41 ISBEGINPROCESS(s)BEGINIF (S="00") THEN y<=a;ELSIF (S="01") TH EN y<=b;ELSIF (S="10") TH EN y<=c;ELSIF (S="11") TH EN y<=d;ELSE y<=NULL;END IF;EDN PROCESS;END ART;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX41 ISPORT(s:IN STD_LOGIC_VECTOR(1 DOWNTO 0); --输入选择信号a,b,c,d:IN STD_LOGIC; --输入信号y:OUT STD_LOGIC);--输出端END MUX41;ARCHITECTURE ART OF MUX41 ISBEGINPROCESS(s)BEGINCASE s ISWHEN “00” => y<=a;WHEN “01” => y<=b;WHEN “10” => y<=c;WHEN “11” => y<=d;WHEN OTHERS =>NULL;END CASE;END PROCESS;END ART;3-3. 图3-31 所示的是双 2 选 1 多路选择器构成的电路MUXK,对于其中MUX21A,当s='0'和'1'时,分别有y<='a'和y<='b'。
填空题1、而时序电路的输出不仅仅和电路当前输入相关,还和电路过去输入相关。
2、由于时序电路的输出和其过去的状态也相关,所以时序电路中必然有记忆元件,用于记忆和过去输入信号相关的信息。
3、时序电路可以分为同步时序电路和异步时序电路两大类。
4、任何时序逻辑电路都是以时钟为驱动信号的。
5、时序逻辑电路的时钟信号边沿分为上升沿和下降沿。
6、显式表示时钟敏感信号是指时钟信号显式地出现在进程语句PROCESS 后面的敏感信号列表中。
7、在隐式表示时钟敏感信号的时候,使用WAIT语句来控制进程的执行。
8、时钟信号是一个系统稳定工作的关键,它是一个系统的最小的时间刻度。
9、根据复位信号对时序逻辑电路的复位方式的不同,可以分为同步复位方式和异步复位方式。
10、在VHDL程序中描述时序电路的同步复位时,会采用IF 语句来描述复位条件。
11、构成时序逻辑电路的基本单元是触发器。
12、移位寄存器从数据输入方式上可以分为并行输入和串行输入两种。
综述题1、请简述同步时序电路和异步时序电路的区别。
答案:●同步时序电路:其所有电路都是用一个公共的时钟信号,电路中所有的记忆都受到这个时钟信号的同一控制,只有在该信号来到的时候记忆元件的状态发生变化,从而使时序电路的输入发生变化;而且每次时钟信号到来的时候忆元件的状态和电路的输出状态才会发生改变。
●异步时序电路:其电路中没有一个统一的时钟信号,各个记忆元件也不受到个时钟控制,电路状态的改变是因为输入信号引起的。
记2、请简述时序逻辑电路在电路结构上的两个显著特点。
●时序逻辑电路通常包含组合电路和存储电路两个组成部分,而存储电路是必少的。
●时序逻辑电路的存储电路的输出状态必须反馈到电路的输入端,与输入信号一起共同决定电路的输出。
?2 ?3 、请画出时序逻辑电路中时钟上升沿和下降沿的波形并且写出其在VHDL语言中的描述方法。
答案:上升沿:VHDL语言描述时钟的上升沿clk= ‘1'AND clk'LAST_V ALUE=‘0' AND clk'EVENclk =‘11电平上升沿clk0电平clk'LAST_V ALUE=‘clk'EVENT下降沿:VHDL语言描述时钟的下降沿clk= ‘0'AND clk'LAST_V ALUE=‘1' AND clk 'EVENTclk'LAST_V ALUE =‘1'1电平下降沿0电平clkclk =‘0' clk'EVENT4、在使用时钟作为敏感信号的时候,需要注意哪三点?答案:●无论是用PROCESS 语句还是WAIT语句,在对时钟边沿说明时,一定要说明是上升沿还是下降沿(前沿还是后沿),仅仅说明边沿是不够的。
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;。