语法详细讲解强制激励.PPT

上传人:国*** 文档编号:782474 上传时间:2018-11-01 格式:PPT 页数:120 大小:296.50KB
下载 相关 举报
语法详细讲解强制激励.PPT_第1页
第1页 / 共120页
语法详细讲解强制激励.PPT_第2页
第2页 / 共120页
语法详细讲解强制激励.PPT_第3页
第3页 / 共120页
语法详细讲解强制激励.PPT_第4页
第4页 / 共120页
语法详细讲解强制激励.PPT_第5页
第5页 / 共120页
点击查看更多>>
资源描述

1、语法详细讲解强制激励 在一个过程块中,可以用两种不同的方式对信号变量或表达式进行连续赋值。 过程连续赋值往往是不可以综合的,通常用在测试模块中。 两种方式都有各自配套的命令来停止赋值过程。 两种不同方式均不允许赋值语句间的时间控制。 assign和 deassign 适用于对寄存器类型的信号(例如: RTL级上的节点或测试模块中在多个地方被赋值的信号)进行赋值。initial begin #10 assign top.dut.fsml.state_reg = init_state;#20 deassign top.dut.fsml.state_reg;end4 force 和 release

2、用于寄存器类型和网络连接类型(例如:门级扫描寄存器的输出)的强制赋值,强制改写其它地方的赋值。initial begin# 10 force top.dut.counter.scan_reg.q=0;# 20 release top.dut.counter.scan_reg.q;end在以上两个例子中,在 10到 20 这个时间段内,网络或寄存器类型的信号被强制赋值,而别处对该变量的赋值均无效。 force的赋值优先级高于 assign。 如果先使用 assign, 再使用 force对同一信号赋值,则信号的值为 force所赋 的值, 语法详细讲解强制激励语法详细讲解字符串 语法详细讲解 强

3、制激励 语法详细讲解强制激励当执行 release后,则信号的值为 assign所赋 的值。 如果用 force对同一个信号赋了几次值,再执行 release,则所有赋的值均不再存在。 可以对信号的某(确定)位、某些(确定)位或拼接的信号,使用 force和 release赋值;但不能对信号的可变位使用 force和 release 来赋值。 不能对寄存器类型的信号某位或某些位使用 assign 和deassign 来赋值。 语法详细讲解强制激励 语法详细讲解建立时钟 虽然有时在设计中会包含时钟,但时钟通常用在测试模块中。下面三个例子分别说明如何在门级和行为级建立不同波形的时钟模型。例 1 简

4、单的对称方波时钟 :语法详细讲解建立时钟 reg clk;always begin#period/2 clk=0;#period/2 clk=1;endreg go; wire clk;nand #(period/2) ul (clk,clk,go);initial begingo=0;#(period/2) go=1;end注:在有些仿真器中,如果设计所用的时钟是由与其相同抽象级别的时钟模型产生的,则仿真器的性能就能得到提高。例 2简单的带延迟的对称方波时钟:语法详细讲解建立时钟 reg clk;initial beginclk=0;#(period)forever#(period/2) c

5、lk=!clkendreg go; wire clk;nand #(period/2) ul (clk,clk,go);initial begingo=0;#(period) go=1;end注:这两个时钟模型有些不同,行为描述的模型延迟期间一直是低电平,而门级描述的模型开始延迟有半个周期是不确定的。语法详细讲解建立时钟 例 3. 带延迟、头一个脉冲不规则的、占空比不为 1的时钟:语法详细讲解建立时钟 reg clk;initial begin#(period+1) clk=1;#(period/2-1)forever begin #(period/4) clk=0;#(3*period/4)

6、 clk=1; endendreg go; wire clk;nand #(3*period/4,period/4) ul(clk,clk,go);initial begin#(period/4+1) go=0;#(5*period/4-1) go=1;end注:这两个时钟模型也有些不同,行为描述的模型一开始就有确定的电平,而门级描述的模型有延迟开始时电平是不确定的。语法详细讲解怎样使用任务mocule bus_ctrl_tbreg 7:0 data;reg data_valid, data_rd;cpu ul(data_valid,data,data_rd);initial begin cp

7、u_driver(8b0000_0000);cpu_driver(8b1010_1010);cpu_driver(8b0101_0101);end task cpu_driver;语法详细讲解怎样使用任务 语法详细讲解怎样使用任务input 7:0 data_in;begin #30 data_valid=1;wait(data_rd=1);#20 data=data_in;wait(data_rd=0);#20 data=8hzz;#30 data_valid=0;endendtask语法详细讲解怎样使用任务 语法详细讲解怎样使用任务endmodule在测试模块中使用任务可以提高程序代码的效率,可以进行多次重复操作。语法详细讲解怎样使用任务 wait waitwait waitdata1 data2 data3 data4cpu_dataclkdata_validdata_readread_cpu_state语法详细讲解存储建模目标 学会使用 Verilog进行存储建模。 学会在 Verilog中进行双向口建模。语法详细讲解存储建模

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

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。