- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四讲 数据流建模
第四讲 数据流建模 连续赋值语句 表达式、操作符 数据流建模实例 门级建模特点: 优点:直接简洁 在电路规模较小时,对于有数字逻辑电路基础的设计来说,门级建模简单直观。 缺点:电路规模较大时,繁琐易错,需要考虑高层次建模 4.1 连续赋值语句 连续赋值语句的左值必须是一个标量或向量线网,或者是标量或向量线网的拼接,而不能是标量或向量寄存器 2.延迟 4.2 表达式、操作符和操作数 1.操作符类型 2. Verilog中的大小(size)与符号 Verilog根据表达式中变量的长度对表达式的值自动地进行调整。 Verilog自动截断或扩展赋值语句中右边的值以适应左边变量的长度。 当一个负数赋值给无符号变量如reg时,Verilog自动完成二进制补码计算 3.算术操作符 4.按位操作符 5.逻辑操作符 6.逻辑反与位反的对比 7.一元归约操作符 8.移位操作符 9.关系操作符 10.相等操作符 相等操作符 相等操作符 11.条件操作符 条件操作符 12.级联操作符 13.复制 4.3 数据流设计实例 1. 4 选1数据选择器数据流建模 a.使用逻辑等式 b.使用条件操作符 2. 4位全加器 b.超前进位加法器 * * 数据流(data flow)建模:描述数据在寄存器间的流动和处理过程。 当今设计公司已经不在从门级结构角度进行设计,而是从更高的抽象层次设计,典型的是RTL(Register Transfer Level)设计,通常指的是数据流建模和行为建模的结合。 连续赋值语句是verilog数据流建模的基本语句,用于对线网进行赋值。它等价于门级描述,然而是从更高的抽象角度来对电路进行描述。连续赋值语句必须以关键词assign开始,其语法如下: assign [delay] target = expression; 连续赋值语句特点: 1. 连续赋值语句 连续赋值语句总是处于激活状态。只要任意一个操作数发生变化,表达式就会被立即重 新计算,并且将结果赋给等号左边的线网; 操作数可以是标量或向量的线网或寄存器,也可以是函数调用; 赋值延迟用于控制对线网赋予新值的时间,根据仿真时间单位进行说明。赋值延迟类似于门延迟.对于描述实际电路中的时序是非常有用的。 //连续赋值语句,out是线网,i1和i2也是线网 wire out,i1,i2; assign out=i1i2; //连续赋值语句,adr是线网,adr1_bits和adr2_bits是寄存器 assign adr[15:0]=adr1_bits[15:0]^adr2_bits[15:0]; //连接操作,左边是一个标量线网和一个向量线网拼接 assign {c_out,sum[3:0]}=a[3:0]+b[3:0]+c_in; 隐式连续赋值 //连续赋值语句,out是线网,i1和i2也是线网 wire out; assign out=i1i2; //隐式连续赋值语句 wire out=i1i2; 等价 //连续赋值语句,i1和i2也是线网 wire i1,i2; assign out=i1i2; //out被自动认为是线网类型 连续赋值语句中的延迟用于控制任一操作数发生变化到语句左值被赋予新值之间的时间间隔 指定赋值延迟的方法有三种:隐式赋值延迟和线网声明延迟。 普通赋值延迟: //连续赋值语句,out是线网,in1和in2也是线网 wire out,in1,in2; assign #10 out=in1in2; in1和in2任一发生变化,计算in1in2新值赋于左边,会有10个单位延迟。 在10单位延迟期间,若in1和in2再次变化,则取in1和in2当前值计算。 也就是说,小于延迟的输入脉冲不影响输出 隐式连续赋值延迟: //隐式连续赋值语句 wire #10 out=i1i2; 线网声明延迟: //连续赋值语句,out是线网,i1和i2也是线网 Wire #10 out; assign out=i1i2; //连续赋值语句,out是线网,i1和i2也是线网 wire out,i1,i2; assign #10 out=i1i2; 数据流建模使用表达式而不是门级原语来描述设计。表达式、操作符和操作数构成了数据流建模的基础。 表达式:由操作符和操作数构成,目的是根据操作符计算出一个值。 操作数:可以是定义过的任何数据类型,有时要根据操作符的要求限制。 操作符:对操作数进行运算并产生一个结果。 下表以优先级顺序列出了Verilog操作符。注意“与”操作符的优先级总是比相同类型的“或”操作符高。 {} {{}} ! ~ | ^ * / % + -
文档评论(0)