第六讲 行为级建模.

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

置Q为0,
置Qb为1ຫໍສະໝຸດ 第五讲 行为建模西安邮电学院通信工程系
过程块(procedural)
过程块是行为模型的基础。一个模块中可以有多个过程块,过程块有两种:
initial块,只能执行一次 always块,循环执行
过程块中有下列部件
过程赋值语句:描述过程块中的数据流 时序控制:控制块的执行及块中的语句时序 高级结构(循环,条件语句等):描述块的功能
连续赋值 输出
output
过程块
Procedural blocks
寄存器类型
register
Continuous assignment
函数
function
双向
inout
参数
parameter
赋值语句
assign
过程块语句
initial block always block
系统任务和函数
System task & function
第五讲 行为建模
西安邮电学院通信工程系
行为建模(描述)
行为级描述是对系统的高抽象级描述。在这个抽象级,注重的是整个系 统的功能而不是实现。 Verilog有高级编程语言结构用于行为描述,包括:initial, always,@, wait, for, while, if else, case 和 forever 等。 Verilog的行为建模是用一系列以高级编程语言编写的并行的、动态的过 程块来描述系统的工作。 D触发器行为 在每一个时钟上升沿, 若Clr不是低电平, 置Q为D值, 置Qb为D值的反 无论何时Clr变低
第五讲 行为建模
西安邮电学院通信工程系
第 五讲 行为建模1
内容: 行为建模 过程块语句 过程赋值 过程中的块语句 过程的时序控制 阻塞与非阻塞过程赋值 条件语句
第五讲 行为建模
西安邮电学院通信工程系
行为建模(描述)
编译指令
Compiler directives
模块定义
module(port list)
第五讲 行为建模
西安邮电学院通信工程系
顺序块 顺序块有以下特点: 1)块内的语句是按顺序执行的,即只有上面一条语句执 行完后下面的语句才能执行。 2)每条语句的延迟时间是相对于前一条语句的仿真时间 而言的。 3)直到最后一条语句执行完,程序流程控制才跳出该语 句块。 顺序块的格式如下: begin 语句1; 语句2; ...... 语句n; end
wire …
// 功能描述 assign ….. // 并行赋值语句 initial …. always … initial …. assign …. always … // 过程块语句 // 过程块语句
且相互独立,并行运行。
endmodule
第五讲 行为建模
西安邮电学院通信工程系
过程赋值(procedural assignment)
第五讲 行为建模
西安邮电学院通信工程系
过程块initial和always
都从0时刻开始执行;
initial无触发条件,只执 行一次;
module name(…)
input … output … reg …. // 信号说明 // 端口说明
always按触发条件执行,或
无触发条件时一直执行; 一个module的行为描述中可 以有多个initial和always 语句,即有多个过程块存在,
西安邮电学院通信工程系
下面举例说明: [例1]: begin areg = breg; creg = areg; //creg的值为breg的值。 end
从该例可以看出,第一条赋值语句先执行,areg的值更新为
breg的值,然后程序流程控制转到第二条赋值语句,creg的 值更新为areg的值。因为这两条赋值语句之间没有任何延迟
时序特性
timig specifications
端口说明
Port declarations
数据类型说明
Data type declarations
电路功能描述
Circuit functionality
子程序
subprograms
输入
input
线网类型
net
模块实例
instantiation
任务
task
在过程块中的赋值称为过程赋值。 在过程赋值语句中表达式左边的信号必须是寄存器类型(如reg类型) 在过程赋值语句等式右边可以是任何有效的表达式,数据类型也没有限制。
如果一个信号没有声明则缺省为wire类型。使用过程赋值语句给wire赋值会 产生错误。
module adder (out, a, b, cin); input a, b, cin; 时序控制 output [1:0] out; wire a, b, cin; reg half_sum; reg [1: 0] out; always @( a or b or cin) 顺序块语句 begin half_sum = a ^ b ^ cin ; // OK half_carry = a & b | a & !b & cin | !a & b & cin ; // ERROR! out = {half_carry, half_ sum} ; half_carry end 没有说明 endmodule
第五讲 行为建模
西安邮电学院通信工程系
过程中的块语句
块语句用来将多个语句组织在一起,使得他们在语法上如同一个语句。块 语句分为两类。 顺序块:语句置于关键字begin和end之间,块中的语句以顺序方式执行。
并行块:关键字fork和join之间的是并行块语句,块中的语句并行执行。
Fork 和 join 语句常用于 testbench 描述。这是因为可以一起给出矢量及其 绝对时间,而不必描述所有先前事件的时间。
时间,creg的值实为breg的值。当然可以在顺序块里延迟控
制时间来分开两个赋值语句的执行时间,见[例2]:
第五讲 行为建模
西安邮电学院通信工程系
或 begin:块名 块内声明语句
语句1;
语句2; ...... 语句n; end
其中:块名即该块的名字,一个标识名。其作用后面再详细
介绍。块内声明语句可以是参数声明语句、reg 型变量声明语 句、integer型变量声明语句、real型变量声明语句。
第五讲 行为建模
相关文档
最新文档