数字系统设计教学资料-练习翻译.pptx

上传人:wuy****n92 文档编号:73403404 上传时间:2023-02-18 格式:PPTX 页数:25 大小:267.40KB
返回 下载 相关 举报
数字系统设计教学资料-练习翻译.pptx_第1页
第1页 / 共25页
数字系统设计教学资料-练习翻译.pptx_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《数字系统设计教学资料-练习翻译.pptx》由会员分享,可在线阅读,更多相关《数字系统设计教学资料-练习翻译.pptx(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、4 4转换下列程序。转换下列程序。(1 1)WAIT UNTIL clockWAIT UNTIL clockEVENT AND clock=EVENT AND clock=1 1;q=data;(2 2)If a(3)=1 then Y=”11”;Elsif a(2)=1 then Y=”10”;Elsif a(1)=1 then Y=”01”;Else Y clk,rst=rst,q=qout);STIMULUS:processbegin rst=0;wait for 100 ns;-0 fsrst=1;wait for 1 us;wait;end process;CLOCK_:proces

2、sbeginclk=0;wait for 50 ns;-0 fsclk=1;wait for 50 ns;-50 nsend process;end TB_ARCHITECTURE;(1)(2)回答VHDL代码与时序图是否具有相同的行为注意:1)”相同的行为”指的是在稳态仿真中(忽略最前面几个周期的任何违规行为),每个时钟周期结束后信号a,b,c具有相同的值。2)对于所有的标记,如果代码与时序图不匹配,你必须解释为什么。3)假设所有的信号,常量,变量,类型等已经被定义和声明。4)所有代码都是符合语法的,可综合的。Architecture a of q is Begin process begi

3、n a=1;loop wait until rising_edge(clk);a=NOT a;end loop;end process;b=NOT a;c=NOT b;end;Architecture b of q isBegin process begin b=0;a=1;wait until rising_edge(clk)b=a;a=c;wait until rising_edge(clk);end process;c=NOT b;End;Architecture c of q is begin process begin a=0;b=1;wait until rising_edge(c

4、lk);b=a;c=b;wait until rising_edge(clk);end process;c=NOT b;end;Architecture d of q isbegin process(b,clk)begin a=NOT b;end process process(a,clk)begin b=NOT a;end process;c=NOT b;End;回答VHDL代码与时序图是否具有相同的行为注意:1)”相同的行为”指的是在稳态仿真中(忽略最前面几个周期的任何违规行为),每个时钟周期结束后信号a,b,c具有相同的值。2)对于所有的标记,如果代码与时序图不匹配,你必须解释为什么。3

5、)假设所有的信号,常量,变量,类型等已经被定义和声明。4)所有代码都是符合语法的,可综合的。C不同:信号a在前一个时钟被赋予信号c的值.这个值是NOT b,该值在两个周期以前为a.信号a每两个时钟翻而不是每个时钟转一次.其余每隔一个时钟周期,a和b具有相同的值.D不同:该代码存在组合循环答案 entity q is port(a,clk,reset:in std_logic;d:out std_logic );end q2;architecture main of q is signal b,c:std_logic;begin b=0 when(reset=1)else a;process(c

6、lk)begin if rising_edge(clk)then c=b;d=c;end if;end process;end main;对于每个电路qaqd,回答为什么它与VHDL代码具有相同的行为.(注意:对于所有的标记,如果电路不一样,你必须详细解析你的回答注意:对于所有的标记,如果电路不一样,你必须详细解析你的回答)entity phythagoras is port(a,b0,b1,c0,c1,d0,d1,e0,e1:in std_logic;l:in std_logic_vector(1 downto 0);p,q,r,s,t,u,v,w,x,y,z:out std_logic )

7、;end phythagoras;对于每个信号p.z,回答该信号是一个锁存器,可综合的门,还是触发器.检查下表空格中正确的选择.architecture main of pythagoras issignal i,j:std_logic;begini=c0 XOR c1;j=c0 XOR c1;process(a,i,j)beginif(a=1)thenp=i AND j;elsep=NOT i;end if;end process;process(a,b0,b1)beginif rising_edge(a)thenq=b0 AND b1;end if;end process;process(

8、a,c0,c1,d0,d1,e0,e1)beginif(a=1)thenr=c0 OR c1;s=d0 AND d1;elser=e0 XOR e1;end if;end process;process beginwait until rising_edge(a);t=b0 XOR b1;u=NOT t;v wait until rising_edge(a);w=b0 AND b1;x wait until rising_edge(a);w=-;x wait until rising_edge(a);w=c0 XOR c1;x=-;end case;end process;y=c0 XOR c

9、1;z IF(fsm_inputs=10 OR fsm_inputs=01)THENnext_state=S1;ELSEnext_state=S0;END IF;fsm_outputs IF(fsm_inputs=10)THENfsm_outputs=11110011;-1next_state=S1;ELSIF(fsm_inputs=01)THENfsm_outputs=01001001;-2next_state=S1;ELSEfsm_outputs=01100001;-3next_state=S1;END IF;END CASE;END PROCESS;sync:PROCESS(clk,ne

10、xt_state)BEGINIF(clkEVENT)AND(clk=1)THENIF(reset=0)THENcurrent_state=S0;ELSEcurrent_state IF(fsm_inputs=10 OR fsm_inputs=01)THENnext_state=S1;ELSEnext_state=S0;END IF;fsm_outputs IF(fsm_inputs=10)THENnext_state=S1;ELSEnext_state=S3;END IF;fsm_outputs IF(fsm_inputs=01)THENnext_state=S2;ELSEnext_state

11、=S3;END IF;fsm_outputs IF(fsm_inputs=10)THENnext_state=S1;ELSIF(fsm_inputs=01)THENnext_state=S2;ELSEnext_state=S3;END IF;fsm_outputs=01100001;-3END CASE;对下面的问题,你只需要给出相应的VHDL代码片段(例如驱动触发器的进程).你可以假定你所需要或想要用的信号已经被定义好.请使用明显的标识名称如d,q,cs select,reset,等等.给出一个D触发器的VHDL代码片段.给出一个多输入的D触发器的VHDL代码片段(假设有两个输入:a和b).

12、给出一个带有片选和异步复位的D触发器的VHDL代码片段.process(clk)beginif rising_edge(clk)thenq=d;end if;end process;process(clk)beginif rising_edge(clk)thenq=d;end if;end process;process(clk,reset)beginif(reset=1)thenq=0;elsif rising_edge(clk)thenif(cs_select=1)thenq=d;end if;end if;end process;分析下面电路的关键路径.对于下面的每个代码片段,回答信号d

13、是否与右图的电路具有相同的行为.如果代码与右图的电路没有相同的行为,请简要描述它们之间的不同之处。process begin wait until rising_edge(clk);c=a and b;wait until rising_edge(clk);d=not c;end process;process begin c=not(a and b);wait until rising_edge(clk);wait until rising_edge(clk);d=c;end process;process begin wait until rising_edge(clk);d=not c;

14、c=a and b;end process;不同:c和d信号每两个时钟周期都对它们的输入只读一次,然后每两个时钟周期都保持值不变不同:c和d信号每两个时钟周期都对它们的输入只读一次,然后每两个时钟周期都保持值不变process begin c=a and b;wait until rising_edge(clk);d=not c;end process;process begin wait until rising_edge(clk);c1=a and b;c2=not c1;d=c2;end process;process begin wait until rising_edge(clk);

15、c1=a and b;d=c2;end process;process(c1)begin c2=not c1;end process;不同:信号从a到d需要三个时钟周期对于下面的每个代码片段,回答信号d是否与右图的电路具有相同的行为.如果代码与右图的电路没有相同的行为,请简要描述它们之间的不同之处。process begin wait until rising_edge(clk);c=a and b;wait until rising_edge(clk);d=not c;end process;process begin c=not(a and b);wait until rising_edg

16、e(clk);wait until rising_edge(clk);d=c;end process;process begin wait until rising_edge(clk);d=not c;c=a and b;end process;对于下面的每个代码片段,回答信号d是否与右图的电路具有相同的行为.如果代码与右图的电路没有相同的行为,请简要描述它们之间的不同之处。process begin c=a and b;wait until rising_edge(clk);d=not c;end process;process begin wait until rising_edge(cl

17、k);c1=a and b;c2=not c1;d=c2;end process;process begin wait until rising_edge(clk);c1=a and b;d=c2;end process;process(c1)begin c2=not c1;end process;对于下面的每个代码片段,回答信号d是否与右图的电路具有相同的行为.如果代码与右图的电路没有相同的行为,请简要描述它们之间的不同之处。1.对于每一个代码片段Q2aQ2e,回答该代码是否符合语法规范.2.如果代码符合语法规范,.3.如果代码是不符合语法的,或者是不可综合的,或者没有遵循良好的编码风格,请

18、说明为什么4.每个代码片段是结构体的一部分.5.信号声明如下:clk,a,b,c,d,d0,d1,q,x,y:std logic m,n:unsigned(3 downto 0)Q2aprocess(clk)beginif rising edge(clk)thenq=d0;elseq=d1;end if;end process;Q2bprocess(a,b,c)beginif a=1 thenx=b and c;y=b or c;elsey=not b;end if;end process;legal,unsynth:if rising edge with elselegal,synth,ba

19、d:latch:for combinational process,must assign to all signals in both branches of if-thenelseQ2cm(0)=n(0);m for:for i in 1 to 3 generateprocess(m,n)beginm(i)=m(i-1)xor n(i);end process;end generate;Q2dprocess beginclk=0;wait for 10 ns;clk=1;wait for 10 ns;end process;legal,synth,good;or legal,synth,b

20、ad:doing Boolean operation(xor)on numeric signallegal,unsynth:wait-for is unsynthesizable1.对于每一个代码片段Q2aQ2e,回答该代码是否符合语法规范.2.如果代码符合语法规范,.3.如果代码是不符合语法的,或者是不可综合的,或者没有遵循良好的编码风格,请说明为什么4.每个代码片段是结构体的一部分.5.信号声明如下:clk,a,b,c,d,d0,d1,q,x,y:std logic m,n:unsigned(3 downto 0)Q2eprocess(a,n)beginif a=1 thenm=to un

21、signed(0,4);elsem=n+1;end if;end process;process(a,m)beginif a=1 thenn=to unsigned(0,4);elsen=m+2;end if;end process;legal,synth,bad:combinational loop1.对于每一个代码片段Q2aQ2e,回答该代码是否符合语法规范.2.如果代码符合语法规范,.3.如果代码是不符合语法的,或者是不可综合的,或者没有遵循良好的编码风格,请说明为什么4.每个代码片段是结构体的一部分.5.信号声明如下:clk,a,b,c,d,d0,d1,q,x,y:std logic

22、m,n:unsigned(3 downto 0)对于下面的每个进程,在右图的波形中画出信号i和z在进程中的行为.注意注意:1.信号声明如下:signal i:unsigned(3 downto 0);signal z:std_logic;2.画出从第0个到第5个时钟周期之间的波形.3.i的波形应该画成整数(如0,1,2.).4.z的波形应该画成线条(如跟时钟clk同样的形式)process begini=to_unsigned(0,4);z=0;wait until rising_edge(clk);while i 3 loopi=i+1;z=not(z);wait until rising_

23、edge(clk);end loop;end process;process begini=to_unsigned(0,4);z=0;wait until rising_edge(clk);while i 3 loopi=i+1;z=i(0);wait until rising_edge(clk);end loop;end process;对于下面的每个进程,在右图的波形中画出信号i和z在进程中的行为.注意注意:1.信号声明如下:signal i:unsigned(3 downto 0);signal z:std_logic;2.画出从第0个到第5个时钟周期之间的波形.3.i的波形应该画成整数

24、(如0,1,2.).4.z的波形应该画成线条(如跟时钟clk同样的形式)process begini=to_unsigned(0,4);z=0;wait until rising_edge(clk);i=i+1;while i 3 loopz=not(z);wait until rising_edge(clk);i=i+1;end loop;end process;对于下面的每个进程,在右图的波形中画出信号i和z在进程中的行为.注意注意:1.信号声明如下:signal i:unsigned(3 downto 0);signal z:std_logic;2.画出从第0个到第5个时钟周期之间的波形.3.i的波形应该画成整数(如0,1,2.).4.z的波形应该画成线条(如跟时钟clk同样的形式)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁