1 什么是行为级建模?
从电路外部行为的角度对电路进行描述,设计者更关心的是算法用硬件实现的方法和他的性能。
2 行为级建模有什么特点?
行为级建模的抽象程度更高,更加偏向与C语言,设计者更加偏向于电路的整体结构和模块所能实现的功能。
3 行为级建模的语言基础?
initial 语句:所有的initial语句内的语句构成一个独立的块,从0时刻开始执行,在整个仿真过程中只执行一次。
如果由多个 initial 这些块都是从0开始并行执行且执行一次。
always 语句:always 语句内所有行为语句构成一个always块,从0时刻开始顺序往下执行,执行完后循环。
通常用于对反复执行活动的建模,比如时钟信号。
always 语法更高级的用法,将会通过判断时钟信号的上升沿或者下降沿,进入块内执行行为语句。
4 什么是行为级建模中基于延迟的时序控制?
基于延迟的时许控制,它直接指明了程序从开始执行到执行完成的时间。
延迟值可以是数值,标识或者表达式,只需要在延迟值前面附加一个关键字#。
5 什么是基于事件的时序控制?
在Verilog 中,事件是指某一个寄存器的值或者线网变量发生变化,事件可以用来触发语句块。
常规事件控制:事件控制用符号 @ 来声明,语句继续执行的条件是信号的值发生了变化,发生正向跳变或者负向。关键字 posedge 代表上升沿,negedge代表下降沿。
命名事件控制:命名事件是由关键字 event 声明,他不会保存任何值,事件触发用 ->符号来表示,
or 事件控制:有时候,多个信号或者事件其中一个发生变化,就能够触发语句的执行。
6 阻塞和非组赛的区别?
阻塞赋值:“=” 阻塞赋值语句的执行是串行执行的,之前前面的阻塞赋值执行完了之后,才会执行后面的阻塞赋值语句。
比如下面的程序,必须是 x 被赋予 0 ,之后 y 才可以被赋予 1,且 reg_a[2] = 1'b1; 执行完后才能执行下一句,所以count = count + 1 是在25个时钟单位才执行。以此类推,但阻塞赋值语句不会阻塞后面的并行执行的语句。
非阻塞赋值:“<=” 它不会阻塞位于同一个顺序块的后面的语句的执行,所有的非阻塞语句可同时执行。
7 行为级建模的实例