设计中心 作业讲评 设计中心 第五章作业 1.并行信号赋值语句有哪两种形式?请将两种 形式做比较。 2. VHDL中主要有哪几种延迟类型?它们有什 么区别? 4.试用if语句设计编写一个四——十六译码器。 5.试用case语句设计编写一个四——十六译码 器。 7.放在进程内和进程外的,而形式完全一样的 两个信号赋值语句有何本质上的差别?试举 例说明。 8.试给出例5-15所对应的逻辑电路图。 设计中心 Putting it all together 设计中心 (1) Simple Signal Assignment ? This kind of statements are executed in Parallel Entity test1 is port ( a, b, e : in bit; c, d : out bit); end test1; architecture test1_body of test1 is begin c <= a and b; d <= e; end test1_body; 设计中心 (2) Conditional Signal Assignments ? The output get the value when the condition is true – e.g. 2 to 1 multiplexer Entity test1 is port (in1, in2, sel : in bit; d : out bit); end test1; architecture test1_body of test1 is begin d <= in1 WHEN sel = ‘0’ ELSE in2; end test1_body; 设计中心 (3) Select Signal Assignments ? The output get value when matching with the selected item Entity test1 is port (a, b: in bit; sel : in bit; c : out bit); end test1; architecture test1_body of test1 is begin WITH sel SELECT c <= a WHEN ‘1’, --逗号 b WHEN ‘0’; --分号 end test1_body; 设计中心 第五章作业 1.并行信号赋值语句有哪两种形式?请将两种 形式做比较。 2. VHDL中主要有哪几种延迟类型?它们有什 么区别? 4.试用if语句设计编写一个四——十六译码器。 5.试用case语句设计编写一个四——十六译码 器。 7.放在进程内和进程外的,而形式完全一样的 两个信号赋值语句有何本质上的差别?试举 例说明。 8.试给出例5-15所对应的逻辑电路图。 设计中心 时序描述—延时类型 ?所有的SIGNAL赋值语句都包含一个延时值, 信号值在这段延时后更新 ?延时值有如下三种表示形式: transport —传播延时(显示定义) inertial —惯性延时(可不显示定义) delta (△) —在没有显示定义延时值时,系统 采用的缺省延时方式 设计中心 时序描述—传播延时 ?传播延时必须显示定义 关键字为transport ?直接模拟导线上信号延迟 ?信号值在说明的时间后更新 b <= transport a AFTER 10 ns; a b 5ns 15ns a b 设计中心 ?惯性延时提供延时值及相应脉冲宽度 ?惯性延时为缺省方式,可以不显示定义 ?惯性延时模拟某类元件的延迟特性(“容”性) b<=inertial not a after 10 ns; 时序描述—惯性延时 5ns 15ns 25ns 35ns a b a b 设计中心 b <= reject 5ns inertial not a after 10 ns; a b 注意: ? reject 5ns 指定了脉冲宽度,即小于5ns的 脉冲滤掉。(对应“容”性特征) ? reject不显示定义时脉冲宽度省缺为延时值 5ns 15ns 25ns 35ns 时序描述—惯性延时(续) 设计中心 惯性延时与传播延时 ?惯性延时——只能保持一个处理事项 ?传播延时——可以保持多个处理事项 PROCESS BEGIN Z <= ‘1’ AFTER 50 ns; Z <= ‘0’ AFTER 100 ns; WAIT; END PROCESS; 50ns 100ns 设计中心 惯性延时与传播延时 ?惯性延时——只能保持一个处理事项 ?传播延时——可以保持多个处理事项 PROCESS BEGIN Z <= ‘1’ AFTER 100 ns; Z <= ‘0’ AFTER 50 ns; WAIT; END PROCESS; 50ns 100ns 设计中心 惯性延时与传播延时 ?惯性延时——只能保持一个处理事项 ?传播延时——可以保持多个处理事项 PROCESS BEGIN Z <= ‘1’ AFTER 50 ns; Z <= ‘1’ AFTER 100 ns; WAIT; END PROCESS; 50ns 100ns 设计中心 惯性延时与传播延时 ?惯性延时——只能保持一个处理事项 ?传播延时——可以保持多个处理事项 PROCESS BEGIN Z<=transport ‘1’ AFTER 50 ns; Z<=transport ‘0’ AFTER 100 ns; WAIT; END PROCESS; 50ns 100ns 设计中心 惯性延时与传播延时 ?惯性延时——只能保持一个处理事项 ?传播延时——可以保持多个处理事项 PROCESS BEGIN Z<=transport ‘1’ AFTER 100 ns; Z<=transport ‘0’ AFTER 50 ns; WAIT; END PROCESS; 50ns 100ns 设计中心 时序描述—Delta延时 ?当SIGNAL赋值语句没有显式说明延时方式 时,系统缺省为△延时 1.信号赋值不能立即生效 2.△表示无限小的时间间隔,在这个间隔后所有的 信号赋值才更新 b <= NOT a; --△延时后,b获取a的值 ?△延时机制使并发语句(进程)的执行更有效 仿真器对进程的执行顺序不会影响仿真结果 设计中心 第五章作业 1.并行信号赋值语句有哪两种形式?请将两种 形式做比较。 2. VHDL中主要有哪几种延迟类型?它们有什 么区别? 4.试用if语句设计编写一个四——十六译码器。 5.试用case语句设计编写一个四——十六译码 器。 7.放在进程内和进程外的,而形式完全一样的 两个信号赋值语句有何本质上的差别?试举 例说明。 8.试给出例5-15所对应的逻辑电路图。 设计中心 四—十六译码器 library IEEE; use IEEE.std_logic_1164.all; entity encoder4_16 is port ( d: in STD_LOGIC_VECTOR (3 downto 0); q: out STD_LOGIC_VECTOR (15 downto 0)); end encoder4_16; 设计中心 architecture encoder_if of encoder4_16 is begin process(d) begin if d="0000" then q<=(0=>'1',others=>'0'); elsif d="0001" then q<=(1=>'1',others=>'0'); elsif d="0010" then q<=(2=>'1',others=>'0'); …… elsif d="1111" then q<=(15=>'1',others=>'0'); else q<=(others=>'0'); end if; end process; end encoder if; 设计中心 第五章作业 1.并行信号赋值语句有哪两种形式?请将两种 形式做比较。 2. VHDL中主要有哪几种延迟类型?它们有什 么区别? 4.试用if语句设计编写一个四——十六译码器。 5.试用case语句设计编写一个四——十六译码 器。 7.放在进程内和进程外的,而形式完全一样的 两个信号赋值语句有何本质上的差别?试举 例说明。 8.试给出例5-15所对应的逻辑电路图。 设计中心 architecture encoder_case of encoder4_16 is begin process(d) begin case d is when "0000" =>q<=(0=>'1',others=>'0'); when "0001" =>q<=(0=>'1',others=>'0'); …… when "1111" =>q<=(0=>'1',others=>'0'); when others =>q<=(others=>'0'); end case; end process; end encoder case; 设计中心 第五章作业 1.并行信号赋值语句有哪两种形式?请将两种 形式做比较。 2. VHDL中主要有哪几种延迟类型?它们有什 么区别? 4.试用if语句设计编写一个四——十六译码器。 5.试用case语句设计编写一个四——十六译码 器。 7.放在进程内和进程外的,而形式完全一样的 两个信号赋值语句有何本质上的差别?试举 例说明。 8.试给出例5-15所对应的逻辑电路图。 设计中心 信号赋值语句 进程外进程内 并发执行顺序执行 不受敏感信号表约束与进程的敏感信号关联 设计中心 第五章作业 1.并行信号赋值语句有哪两种形式?请将两种 形式做比较。 2. VHDL中主要有哪几种延迟类型?它们有什 么区别? 4.试用if语句设计编写一个四——十六译码器。 5.试用case语句设计编写一个四——十六译码 器。 7.放在进程内和进程外的,而形式完全一样的 两个信号赋值语句有何本质上的差别?试举 例说明。 8.试给出例5-17所对应的逻辑电路图。 设计中心 z a S1 XOR OR AND AND b c d S2 S3