数字系统设计:练习 翻译_第1页
数字系统设计:练习 翻译_第2页
数字系统设计:练习 翻译_第3页
数字系统设计:练习 翻译_第4页
数字系统设计:练习 翻译_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4.转换下列程序。(1)

WAITUNTILclock’EVENTANDclock=‘1’;

q<=data;(2)Ifa(3)='1'thenY<=”11”;Elsifa(2)='1'thenY<=”10”;Elsifa(1)='1'thenY<=”01”;ElseY<="00";Endif;

三、电路设计题(43分)1.解答:参考libraryieee;useieee.std_logic_1164.all;entitysingen_tbisendsingen_tb;architectureTB_ARCHITECTUREofsingen_tbis componentsin_gen port( clk:instd_logic; rst:instd_logic; q:OUTSTD_LOGIC_VECTOR(7DOWNTO0) ); endcomponent; signalclk:std_logic; signalrst:std_logic; signalqout:STD_LOGIC_VECTOR(7DOWNTO0);begin UUT:sin_gen portmap( clk=>clk, rst=>rst, q=>qout );STIMULUS:processbegin rst<='0';waitfor100ns;--0fs rst<='1'; waitfor1us; wait;endprocess;CLOCK_:processbegin clk<='0'; waitfor50ns;--0fs clk<='1'; waitfor50ns;--50nsendprocess;endTB_ARCHITECTURE;(1)(2)回答VHDL代码与时序图是否具有相同的行为注意:1)”相同的行为”指的是在稳态仿真中(忽略最前面几个周期的任何违规行为),每个时钟周期结束后信号a,b,c具有相同的值。2)对于所有的标记,如果代码与时序图不匹配,你必须解释为什么。3)假设所有的信号,常量,变量,类型等已经被定义和声明。4)所有代码都是符合语法的,可综合的。ArchitectureaofqisBegin

processbegin

a<=‘1’;

loop

waituntilrising_edge(clk);

a<=NOTa;

endloop;

endprocess;

b<=NOTa;

c<=NOTb;

end;ArchitecturebofqisBegin

processbegin

b<=‘0’;

a<=‘1’;

waituntilrising_edge(clk)

b<=a;

a<=c;

waituntilrising_edge(clk);

endprocess;

c<=NOTb;End;

Architecturecofqisbegin

processbegin

a<=‘0’;

b<=‘1’;

waituntilrising_edge(clk);

b<=a;

c<=b;

waituntilrising_edge(clk);

endprocess;

c<=NOTb;

end;Architecturedofqisbegin

process(b,clk)begina<=NOTb;

endprocessprocess(a,clk)beginb<=NOTa;endprocess;

c<=NOTb;End;

回答VHDL代码与时序图是否具有相同的行为注意:1)”相同的行为”指的是在稳态仿真中(忽略最前面几个周期的任何违规行为),每个时钟周期结束后信号a,b,c具有相同的值。2)对于所有的标记,如果代码与时序图不匹配,你必须解释为什么。3)假设所有的信号,常量,变量,类型等已经被定义和声明。4)所有代码都是符合语法的,可综合的。C不同:信号a在前一个时钟被赋予信号c的值.这个值是NOTb,该值在两个周期以前为a.信号a每两个时钟翻而不是每个时钟转一次.其余每隔一个时钟周期,a和b具有相同的值.D不同:该代码存在组合循环答案

entityqisport(a,clk,reset:instd_logic;d:outstd_logic);endq2;architecturemainofqissignalb,c:std_logic;beginb<=’0’when(reset=’1’)elsea;process(clk)beginifrising_edge(clk)thenc<=b;d<=c;endif;endprocess;endmain;对于每个电路qa–qd,回答为什么它与VHDL代码具有相同的行为.(注意:对于所有的标记,如果电路不一样,你必须详细解析你的回答)entityphythagorasisport(a,b0,b1,c0,c1,d0,d1,e0,e1:instd_logic;l:instd_logic_vector(1downto0);

p,q,r,s,t,u,v,w,x,y,z:outstd_logic);endphythagoras;对于每个信号p...z,回答该信号是一个锁存器,可综合的门,还是触发器.检查下表空格中正确的选择.architecturemainofpythagorasissignali,j:std_logic;begini<=c0XORc1;j<=c0XORc1;process(a,i,j)beginif(a=’1’)thenp<=iANDj;elsep<=NOTi;endif;endprocess;process(a,b0,b1)beginifrising_edge(a)thenq<=b0ANDb1;endif;endprocess;process(a,c0,c1,d0,d1,e0,e1)beginif(a=’1’)thenr<=c0ORc1;s<=d0ANDd1;elser<=e0XORe1;endif;endprocess;processbeginwaituntilrising_edge(a);t<=b0XORb1;u<=NOTt;v<=NOTx;endprocess;processbegincaseliswhen"00"=>waituntilrising_edge(a);w<=b0ANDb1;x<=’0’;when"01"=>waituntilrising_edge(a);w<=’-’;x<=’1’;when"1-"=>waituntilrising_edge(a);w<=c0XORc1;x<=’-’;endcase;endprocess;y<=c0XORc1;z<=xXORw;endmain;考虑下面执行的一个Mealy状态机.ENTITYmealyISPORT(clk,reset:INSTD_LOGIC;fsm_inputs:INSTD_LOGIC_VECTOR(1DOWNTO0);fsm_outputs:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDmealy;ARCHITECTUREfsmOFmealyISTYPEfsm_statesIS(S0,S1);SIGNALcurrent_state,next_state:fsm_states;BEGINasync:PROCESS(current_state,fsm_inputs)BEGINCASEcurrent_stateISWHENS0=>IF(fsm_inputs="10"ORfsm_inputs="01")THENnext_state<=S1;ELSEnext_state<=S0;ENDIF;fsm_outputs<="10000001";--"0"WHENS1=>IF(fsm_inputs="10")THENfsm_outputs<="11110011";--"1"next_state<=S1;ELSIF(fsm_inputs="01")THENfsm_outputs<="01001001";--"2"next_state<=S1;ELSEfsm_outputs<="01100001";--"3"next_state<=S1;ENDIF;ENDCASE;ENDPROCESS;sync:PROCESS(clk,next_state)BEGINIF(clk’EVENT)AND(clk=’1’)THENIF(reset=’0’)THENcurrent_state<=S0;ELSEcurrent_state<=next_state;ENDIF;ENDIF;ENDPROCESS;ENDfsm;1.说明Mealy状态机与Moore状态机之间的区别2.把Mealy状态机转换成Moore状态机,给出对等的Moore状态机的VHDL代码.注意:你的VHDL代码不一定要100%正确,但必须是合理的.你不需要重复你不改变的那一部分(例如:如果你不改变sync进程,你不需要再抄写它).Mealy状态机:输出依赖当前状态和输入,组合路径从输入到输出,输出一定是组合逻辑(need2of3)Mooremachine:输出仅仅依赖于当前状态,从输入到输出之间没有组合路径,输出是触发器或组合逻辑(need2of3)--MooreFiniteStateMachine--S0:IdleState--Outputs0toseven-segmentdisplay--S1:InputState--Outputs1toseven-segmentdisplay--S2:InputState--Outputs2toseven-segmentdisplay--S3:InputState--Outputs3toseven-segmentdisplayARCHITECTUREfsmOFmooreISTYPEfsm_statesIS(S0,S1,S2,S3);SIGNALcurrent_state:fsm_states;SIGNALnext_state:fsm_states;BEGINasync:PROCESS(current_state,fsm_inputs)BEGINCASEcurrent_stateISWHENS0=>IF(fsm_inputs="10"ORfsm_inputs="01")THENnext_state<=S1;ELSEnext_state<=S0;ENDIF;fsm_outputs<="10000001";--"0"WHENS1=>IF(fsm_inputs="10")THENnext_state<=S1;ELSEnext_state<=S3;ENDIF;fsm_outputs<="11110011";--"1"ENDPROCESS;ENDfsm;WHENS2=>IF(fsm_inputs="01")THENnext_state<=S2;ELSEnext_state<=S3;ENDIF;fsm_outputs<="01001001";--"2"WHENS3=>IF(fsm_inputs="10")THENnext_state<=S1;ELSIF(fsm_inputs="01")THENnext_state<=S2;ELSEnext_state<=S3;ENDIF;fsm_outputs<="01100001";--"3"ENDCASE;对下面的问题,你只需要给出相应的VHDL代码片段(例如驱动触发器的进程).你可以假定你所需要或想要用的信号已经被定义好.请使用明显的标识名称如d,q,csselect,reset,等等.给出一个D触发器的VHDL代码片段.给出一个多输入的D触发器的VHDL代码片段(假设有两个输入:a和b).给出一个带有片选和异步复位的D触发器的VHDL代码片段.process(clk)beginifrising_edge(clk)thenq<=d;endif;endprocess;process(clk)beginifrising_edge(clk)thenq<=d;endif;endprocess;process(clk,reset)beginif(reset=’1’)thenq<=’0’;elsifrising_edge(clk)thenif(cs_select=’1’)thenq<=d;endif;endif;endprocess;分析下面电路的关键路径.对于下面的每个代码片段,回答信号d是否与右图的电路具有相同的行为.如果代码与右图的电路没有相同的行为,请简要描述它们之间的不同之处。processbeginwaituntilrising_edge(clk);c<=aandb;waituntilrising_edge(clk);d<=notc;endprocess;processbeginc<=not(aandb);waituntilrising_edge(clk);waituntilrising_edge(clk);d<=c;endprocess;processbeginwaituntilrising_edge(clk);d<=notc;c<=aandb;endprocess;不同:c和d信号每两个时钟周期都对它们的输入只读一次,然后每两个时钟周期都保持值不变不同:c和d信号每两个时钟周期都对它们的输入只读一次,然后每两个时钟周期都保持值不变processbeginc<=aandb;waituntilrising_edge(clk);d<=notc;endprocess;processbeginwaituntilrising_edge(clk);c1<=aandb;c2<=notc1;d<=c2;endprocess;processbeginwaituntilrising_edge(clk);c1<=aandb;d<=c2;endprocess;process(c1)beginc2<=notc1;endprocess;不同:信号从a到d需要三个时钟周期对于下面的每个代码片段,回答信号d是否与右图的电路具有相同的行为.如果代码与右图的电路没有相同的行为,请简要描述它们之间的不同之处。processbeginwaituntilrising_edge(clk);c<=aandb;waituntilrising_edge(clk);d<=notc;endprocess;processbeginc<=not(aandb);waituntilrising_edge(clk);waituntilrising_edge(clk);d<=c;endprocess;processbeginwaituntilrising_edge(clk);d<=notc;c<=aandb;endprocess;对于下面的每个代码片段,回答信号d是否与右图的电路具有相同的行为.如果代码与右图的电路没有相同的行为,请简要描述它们之间的不同之处。processbeginc<=aandb;waituntilrising_edge(clk);d<=notc;endprocess;processbeginwaituntilrising_edge(clk);c1<=aandb;c2<=notc1;d<=c2;endprocess;processbeginwaituntilrising_edge(clk);c1<=aandb;d<=c2;endprocess;process(c1)beginc2<=notc1;endprocess;对于下面的每个代码片段,回答信号d是否与右图的电路具有相同的行为.如果代码与右图的电路没有相同的行为,请简要描述它们之间的不同之处。1.对于每一个代码片段Q2a–Q2e,回答该代码是否符合语法规范.2.如果代码符合语法规范,.3.如果代码是不符合语法的,或者是不可综合的,或者没有遵循良好的编码风格,请说明为什么4.每个代码片段是结构体的一部分.5.信号声明如下:clk,a,b,c,d,d0,d1,q,x,y:stdlogicm,n:unsigned(3downto0)Q2aprocess(clk)beginifrisingedge(clk)thenq<=d0;elseq<=d1;endif;endprocess;Q2bprocess(a,b,c)beginifa=’1’thenx<=bandc;y<=borc;elsey<=notb;endif;endprocess;legal,unsynth:ifrisingedgewithelselegal,synth,bad:latch:forcombinationalprocess,mustassigntoallsignalsinbothbranchesofif-thenelseQ2cm(0)<=n(0);mfor:foriin1to3generateprocess(m,n)beginm(i)<=m(i-1)xorn(i);endprocess;endgenerate;Q2dprocessbeginclk<=’0’;waitfor10ns;clk<=’1’;waitfor10ns;endprocess;legal,synth,good;orlegal,synth,bad:doingBooleanoperation(xor)onnumericsignallegal,unsynth:wait-forisunsynthesizable1.对于每一个代码片段Q2a–Q2e,回答该代码是否符合语法规范.2.如果代码符合语法规范,.3.如果代码是不符合语法的,或者是不可综合的,或者没有遵循良好的编码风格,请说明为什么4.每个代码片段是结构体的一部分.5.信号声明如下:clk,a,b,c,d,d0,d1,q,x,y:stdlogicm,n:unsigned(3downto0)Q2eprocess(a,n)beginifa=’1’thenm<=tounsigned(0,4);elsem<=n+1;endif;endprocess;process(a,m)beginifa=’1’thenn<=tounsigned(0,4);elsen<=m+2;endif;endprocess;legal,synth,bad:combinationalloop1.对于每一个代码片段Q2a–Q2e,回答该代码是否符合语法规范.2.如果代码符合语法规范,.3.如果代码是不符合语法的,或者是不可综合的,或者没有遵循良好的编码风格,请说明为什么4.每个代码片段是结构体的一部分.5.信号声明如下:clk,a,b,c,d,d0,d1,q,x,y:stdlogicm,n:unsigned(3downto0)对于下面的每个进程,在右图的波形中画

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论