设计中心
作业讲评
设计中心
第五章作业
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