vhdl 行为建模1

上传人:wm****3 文档编号:51886855 上传时间:2018-08-17 格式:PPT 页数:58 大小:437KB
返回 下载 相关 举报
vhdl  行为建模1_第1页
第1页 / 共58页
vhdl  行为建模1_第2页
第2页 / 共58页
vhdl  行为建模1_第3页
第3页 / 共58页
vhdl  行为建模1_第4页
第4页 / 共58页
vhdl  行为建模1_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《vhdl 行为建模1》由会员分享,可在线阅读,更多相关《vhdl 行为建模1(58页珍藏版)》请在金锄头文库上搜索。

1、第五讲 行为建模西安邮电学院通信工程系第 五讲 行为建模内容: v 行为建模 v 过程块语句 v 过程赋值 v 过程中的块语句 v 过程的时序控制 v 阻塞与非阻塞过程赋值 v 条件语句第五讲 行为建模西安邮电学院通信工程系行为建模(描述)模块定义 module(port list)时序特性 timig specifications端口说明 Port declarations输入 input双向 inout输出 output数据类型说明 Data type declarations线网类型 net参数 parameter寄存器类型 register电路功能描述 Circuit function

2、ality子程序 subprograms任务 task函数 function系统任务和函数 System taskinput a, b, cin;output 1:0 out;wire a, b, cin;reg half_sum;reg 1: 0 out;always ( a or b or cin)beginhalf_sum = a b cin ; / OKhalf_carry = a / ERROR!out = half_carry, half_ sum ;end endmodulehalf_carry 没有说明时序控制顺序块语句第五讲 行为建模西安邮电学院通信工程系 过程中的块语句v

3、块语句用来将多个语句组织在一起,使得他们在语法上如同一个语句。块语句分为两类。v 顺序块:语句置于关键字begin和end之间,块中的语句以顺序方式执行。v 并行块:关键字fork和join之间的是并行块语句,块中的语句并行执行。v Fork和join语句常用于testbench描述。这是因为可以一起给出矢量及其绝对时间,而不必描述所有先前事件的时间。第五讲 行为建模西安邮电学院通信工程系 顺序块 顺序块有以下特点: 1)块内的语句是按顺序执行的,即只有上面一条语句执 行完后下面的语句才能执行。 2)每条语句的延迟时间是相对于前一条语句的仿真时间 而言的。 3)直到最后一条语句执行完,程序流程

4、控制才跳出该语 句块。 顺序块的格式如下: begin语句1;语句2;语句n; end第五讲 行为建模西安邮电学院通信工程系 或begin:块名块内声明语句语句1;语句2;语句n;end 其中:块名即该块的名字,一个标识名。其作用后面再详细 介绍。块内声明语句可以是参数声明语句、reg型变量声明语句、integer型变量声明语句、real型变量声明语句。 第五讲 行为建模西安邮电学院通信工程系下面举例说明:例1:beginareg = breg;creg = areg; /creg的值为breg的值。end 从该例可以看出,第一条赋值语句先执行,areg的值更新为breg的值,然后程序流程控制

5、转到第二条赋值语句,creg的值更新为areg的值。因为这两条赋值语句之间没有任何延迟时间,creg的值实为breg的值。当然可以在顺序块里延迟控制时间来分开两个赋值语句的执行时间,见例2: 第五讲 行为建模西安邮电学院通信工程系例2:beginareg = breg;#10 creg = areg;/在两条赋值语句间延迟10个时间单位。end 第五讲 行为建模西安邮电学院通信工程系例3:parameter d=50; /声明d是一个参数reg 7:0 r; /声明r是一个8位的寄存器变量begin /由一系列延迟产生的波形#d r = h35;#d r = hE2;#d r = h00;#d

6、 r = hF7;#d - end_wave; /触发事件end_waveend第五讲 行为建模西安邮电学院通信工程系 并行块 并行块有以下四个特点: 1) 块内语句是同时执行的,即程序流程控制一进入到该并行块 ,块内语句则开始同时并行地执行。 2) 块内每条语句的延迟时间是相对于程序流程控制进入到块内 时的仿真时间的。 3) 延迟时间是用来给赋值语句提供执行时序的。 4)当按时间时序排序在最后的语句执行完后或一个disable语句 执行时,程序流程控制跳出该程序块。 并行块的格式如下: fork 语句1; 语句2; . 语句n; join第五讲 行为建模西安邮电学院通信工程系fork:块名

7、块内声明语句 语句1; 语句2;语句n; join 其中:块名即标识该块的一个名字,相当于一个标识符。 块内说明语句可以是参数说明语句、reg型变量声明语句、 integer型变量声明语句、real型变量声明语句、time型变量声明 语句、事件(event)说明语句。 第五讲 行为建模西安邮电学院通信工程系下面举例说明:例4: fork #50 r = h35; #100 r = hE2; #150 r = h00; #200 r = hF7; #250 - end_wave; /触发事件end_wave. join 在这个例子中用并行块来替代了前面例子中的顺序块来 产生波形,用这两种方法生成

8、的波形是一样的。 第五讲 行为建模西安邮电学院通信工程系有名块格式:begin: 块名end或fork:块名join有名块的块名作用:v 便于实现对块语句的有效控制q 用disable语句终止或提前结束有名块的执行过 程v 允许在块内引入局部变量q 只在块内起作用的变量q 变量名可以和块外的其他变量名相同q 一定是寄存器类q 例: begin: SEQ_BLKreg3:0 satsat = mask ff = sat;end 第五讲 行为建模西安邮电学院通信工程系过程的时序控制在过程块中可以说明过程时序。过程时序控制有三类:v 延时执行:#delay, 延迟指定时间步后执行语句v 边沿敏感事件

9、的时序控制:()q在信号发生翻转后执行语句。q可以说明信号有效沿是上升沿(posedge)还是下降沿(negedge)。q可以用关键字or指定多个参数。v 电平敏感事件的时序控制:wait()q直至expr值为真时(非零)才执行语句。q若expr已经为真则立即执行语句。第五讲 行为建模西安邮电学院通信工程系延时执行v 语法: =;v 执行过程:定时控制 - 求表达式 - 赋值v 举例:10 reg_a=reg_b; /延时10个单位后,执行赋值。# 2 q= a /延时2个单位后,求表达式,赋 /值。v 与assign语句延时相似,为惯性延时。第五讲 行为建模西安邮电学院通信工程系延时执行v

10、在testbench中使用延时执行(#延时)施加激励,或在 行为模型中模拟实际延时。module muxtwo (out, a, b, sl);input a, b, sl;output out;reg out;always ( sl or a or b)if (! sl)#10 out = a; / 从a到out延时10个时间单位else#12 out = b;/从b到out延时12个时间单位endmodule在延时执行中可以使用模块参数 parameter:module clock_gen (clk);output clk;reg clk;parameter cycle = 20;init

11、ial clk = 0;always#(cycle/2) clk = clk;endmodule第五讲 行为建模西安邮电学院通信工程系 延时执行例module clk_gen_demo(clock1,clock2);output clock1,clock2;reg clock1,clock2;initialbeginclock1=0;clock2=1;endalwaysbegin#50 clock1=clock1;endalwaysbegin#100 clock2=clock2;endendmodule若赋值延时为0,结果将如何?alwaysbegin#0 clock1=clock1;end第

12、五讲 行为建模西安邮电学院通信工程系块语句中的延时执行v 在顺序块中,语句一条接一条地计算执行。v 在并行块中,所有语句在各自的延迟之后立即计算执行。begin#5 a = 3;#5 a = 5;#5 a = 4;endfork#5 a = 3;#15 a = 4;#10 a = 5;joinv 上面的两个例子在功能上是等价的。Fork-join例子里的赋值故意 打乱顺序是为了强调顺序是没有关系的。v 注意fork-join块是典型的不可综合语句,并且在一些仿真器中效 率较差。第五讲 行为建模西安邮电学院通信工程系边沿敏感事件的时序控制v 事件控制:(事件控制敏感表),等待直到事件发生后执行。

13、v (信号名) 信号名有变化就触发事件,例:(clock) a=b;v (posedge 信号名) 信号名有上升沿就触发事件,例:(posedge clock) a=b;v (negedge 信号名) 信号名有下降沿就触发事件例:(negedge clock) a=b;v (敏感事件1 or 敏感事件2 or ) 敏感事件之一触发事件例:(posedge reset or posedge clear) reg_out=0;( a or b) c = a 第五讲 行为建模西安邮电学院通信工程系边沿敏感事件的时序控制例module reg_ adder (out, a, b, clk);input

14、 clk;input 2: 0 a, b;output 3: 0 out;reg 3: 0 out;reg 3: 0 sum;always ( a or b) / 若a或b发生任何变化,执行#5 sum = a + b;always ( negedge clk) / 在clk下降沿执行out = sum; endmodule模块 reg_adder 描述了什么电路?第五讲 行为建模西安邮电学院通信工程系电平敏感事件的时序控制v 事件控制:wait(变量或表达式事件),等待直到事件为真(1)执行后续语句。例:module latch_adder (out, a, b, enable);input

15、 enable;input 2: 0 a, b;output 3: 0 out;reg 3: 0 out;always ( a or b)beginwait (!enable) / 当enable为低电平时执行加法out = a + b;end endmodulev 综合工具还不支持wait语句。第五讲 行为建模西安邮电学院通信工程系过程的时序控制例module wait_test;reg clk, waito, edgeo;initial begin clk = 0;edgeo=0;waito=0;end / 信号赋初值0always #50 clk = clk; / 描述 clkalways (clk) #10 edgeo = clk; / 描述 edgeoalways wait(clk) #10 waito = waito; / 描述 waito endmodule第五讲 行为建模西安邮电学院通信工程系 仿真中行为描述例在本例中发生下面顺序的事件:1.等待set=1,忽略时刻10的clk的posedge。2.等待下一个clk的posedge,它将在时刻30发生。3.等待3个时间单位,在时刻33(30+3)置q=1。4.等待10个时间单位,在时刻43(33+10)

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

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号