语法详细讲解.ppt

  1. 1、本文档共120页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:400-050-0739(电话支持时间:9:00-19:00)。
语法详细讲解 强制激励 在一个过程块中,可以用两种不同的方式对信号变量或表达式进行连续赋值。 过程连续赋值往往是不可以综合的,通常用在测试模块中。 两种方式都有各自配套的命令来停止赋值过程。 两种不同方式均不允许赋值语句间的时间控制。 assign和deassign 适用于对寄存器类型的信号(例如:RTL级上 的节点或测试模块中在多个地方被赋值的信号)进行赋值。 initial begin #10 assign top.dut.fsml.state_reg = `init_state; 语法详细讲解 强制激励 #20 deassign top.dut.fsml.state_reg; end force 和 release 用于寄存器类型和网络连接类型(例如:门级扫描寄存器的输出)的强制赋值,强制改写其它地方的赋值。 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所赋 的值, 语法详细讲解 强制激励 当执行release后,则信号的值为assign所赋 的值。 如果用force对同一个信号赋了几次值,再执行release,则所有赋的值均不再存在。 可以对信号的某(确定)位、某些(确定)位或拼接的信号,使用force和release赋值;但不能对信号的可变位使用force和release 来赋值。 不能对寄存器类型的信号某位或某些位使用 assign 和deassign 来赋值。 语法详细讲解 建立时钟 虽然有时在设计中会包含时钟,但时钟通常用在测试模块中。下面 三个例子分别说明如何在门级和行为级建立不同波形的时钟模型。 [例1] 简单的对称方波时钟: 语法详细讲解 建立时钟 [例2]简单的带延迟的对称方波时钟: 语法详细讲解 建立时钟 [例3]. 带延迟、头一个脉冲不规则的、占空比不为1的时钟: 语法详细讲解 怎样使用任务 mocule bus_ctrl_tb reg [7:0] data; reg data_valid, data_rd; cpu ul(data_valid,data,data_rd); initial begin cpu_driver(8’b0000_0000); cpu_driver(8’b1010_1010); cpu_driver(8’b0101_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=8’hzz; #30 data_valid=0; end endtask 语法详细讲解 怎样使用任务 endmodule 在测试模块中使用任务可以提高程序代码的效率,可以进行多次重复操作。 语法详细讲解 存储建模 目标 学会使用Verilog进行存储建模。 学会在Verilog中进行双向口建模。 语法详细讲解 存储设备建模 存储设备建模必须注意以下两个方面的问题: 声明存储容量的大小。 提供对内容的访问权限,例如: 只读 读写 同步读写 多次读,同时进行一次写 多次同步读写,同时提供一些方法保证一致性 语法详细讲解 简单ROM建模 myrom.v `timescale 1ns/10ps module myrom(read_data,addr,read_en_

文档评论(0)

阿毛
该用户很懒,什么也没介绍

相关文档

相关课程推荐