1 / 91
文档名称:

硬件描述语言四.ppt

格式:ppt   大小:4,633KB   页数:91页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

硬件描述语言四.ppt

上传人:文库旗舰店 2022/5/3 文件大小:4.52 MB

下载得到文件列表

硬件描述语言四.ppt

相关文档

文档介绍

文档介绍:硬件描述语言
第四讲
*
简单回顾
状态机
仿真流程
编译指令
系统任务
仿真工具
行为建模
*
第八章 语法进阶
UDP
命名块
强制激励
*
UDP
*
用户定义的原语 (UDP) 其行为与 modle
*
注意:
disable语句用来终止命名块或任务的执行。这是指在尚未执行该命名块或任务任何一条语句前,就从该命名块/任务执行中返回。
语法:
disable 〈块名〉 或 disable 〈任务名〉
禁止执行命名块或任务后,所有在事件队列中由该命名块/任务安排的事件都将被删除。
一般情况下disable语句是不可综合的。
在上页的例子中,只禁止命名块也可以得到预期的结果:命名块中所有的事件,包括任务和函数的执行都将被取消
*
强制激励
在一个过程块中,可以用两种不同的方式对信号变量或表达式进行连续赋值。
过程连续赋值往往是不可以综合的,通常用在测试模块中。
两种方式都有各自配套的命令来停止赋值过程。
两种不同方式均不允许赋值语句间的时间控制。
assign和deassign 适用于对寄存器类型的信号(例如:RTL级上的节点或测试模块中在多个地方被赋值的信号)进行赋值。
initial begin
#10 assign = `init_state;
强制激励
#20 deassign ;
end
force 和 release 用于寄存器类型和网络连接类型(例如:门级扫描寄存器的输出)的强制赋值,强制改写其它地方的赋值。
initial begin
# 10 force =0;
# 20 release ;
end
在以上两个例子中,在10到20 这个时间段内,网络或寄存器类型的信号被强制赋值,而别处对该变量的赋值均无效。
force的赋值优先级高于assign。
如果先使用assign,再使用force对同一信号赋值,则信号的值为force所赋 的值,
强制激励
当执行release后,则信号的值为assign所赋 的值。
如果用force对同一个信号赋了几次值,再执行release,则所有赋的值均不再存在。
可以对信号的某(确定)位、某些(确定)位或拼接的信号,使用force和release赋值;但不能对信号的可变位使用force和release 来赋值。
不能对寄存器类型的信号某位或某些位使用 assign 和deassign 来赋值。
第九章 高级电路设计
序列检测器
流水线
RISC CPU
*
序列检测器
序列检测指的就是将一个指定的序列从数字码流中识别出来。本例中,我们将设计一个“10010”序列的检测器。设X为数字码流输入,Z为检出标记输出,高电平表示“发现指定序列”,低电平表示“没有发现指定序列”
*
序列检测器
*
序列检测器
*
序列检测器
*
序列检测器
*
序列检测器
*
序列检测器
module seqdet( x, z, clk, rst);
input x,clk, rst;
output z;
reg [2:0] state;//状态寄存器
wire z;
parameter IDLE= 'd0, A='d1, B='d2,
C='d3, D='d4,
E='d5, F='d6,
G='d7;
assign z=(state==D && x==0) ? 1 :0;
always @(posedge clk or negedge rst)
if(!rst)
begin
state<=IDLE;
end
else
*
casex( state)
IDLE: if(x==1)begin
state<=A;end
A: if (x==0)begin
state<=B;end
B: if (x==0)begin
state<=C;end
Else begin
state<=F;end
C: if(x==1)begin
state<=D;end
Else begin
state<=G;
end
*
D: if(x==0)
begin
state<=E;
end
else
begin
state<=A;
end
E: if(x==0)
begin
state<=C;
end
else
begin
state