




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
reg相当于存储单元,wire相当于物理连线Verilog 中变量的物理数据分为线型和寄存器型。这两种类型的变量在定义时要设置位宽,缺省为1位。变量的每一位可以是0,1,X,Z。其中x代表一个未被预置初始状态的变量或者是由于由两个或多个驱动装置试图将之设定为不同的值而引起的冲突型线型变量。z代表高阻状态或浮空量。线型数据包括wire,wand,wor等几种类型在被一个以上激励源驱动时,不同的线型数据有各自决定其最终值的分辨办法。两者的区别是:即存器型数据保持最后一次的赋值,而线型数据需要持续的驱动输入端口可以由net/reg驱动,但输入端口只能是net;输出端口可以使net/reg类型,输出端口只能驱动net;若输出端口在过程块中赋值则为reg型,若在过程块外赋值则为net型用关键词inout声明一个双向端口, inout端口不能声明为寄存器类型,只能是net类型。* wire表示直通,即只要输入有变化,输出马上无条件地反映;reg表示一定要有触发,输出才会反映输入。 不指定就默认为1位wire类型。专门指定出wire类型,可能是多位或为使程序易读。wire只能被assign连续赋值,reg只能在initial和always中赋值。wire使用在连续赋值语句中,而reg使用在过程赋值语句中。 在连续赋值语句中,表达式右侧的计算结果可以立即更新表达式的左侧。在理解上,相当于一个逻辑之后直接连了一条线,这个逻辑对应于表达式的右侧,而这条线就对应于wire。在过程赋值语句中,表达式右侧的计算结果在某种条件的触发下放到一个变量当中,而这个变量可以声明成reg类型的。根据触发条件的不同,过程赋值语句可以建模不同的硬件结构:如果这个条件是时钟的上升沿或下降沿,那么这个硬件模型就是一个触发器;如果这个条件是某一信号的高电平或低电平,那么这个硬件模型就是一个锁存器;如果这个条件是赋值语句右侧任意操作数的变化,那么这个硬件模型就是一个组合逻辑。 输入端口可以由wire/reg驱动,但输入端口只能是wire;输出端口可以使wire/reg类型,输出端口只能驱动wire;若输出端口在过程块中赋值则为reg型,若在过程块外赋值则为net型。用关键词inout声明一个双向端口, inout端口不能声明为reg类型,只能是wire类型;输入和双向端口不能声明为寄存器类型。 简单来说硬件描述语言有两种用途:1、仿真,2、综合。对于wire和reg,也要从这两个角度来考虑。*从仿真的角度来说,HDL语言面对的是编译器(如Modelsim等),相当于软件思路。这时:wire对应于连续赋值,如assignreg对应于过程赋值,如always,initial*从综合的角度来说,HDL语言面对的是综合器(如DC等),要从电路的角度来考虑。这时:1、wire型的变量综合出来一般是一根导线;2、reg变量在always块中有两种情况:(1)、always后的敏感表中是(a or b or c)形式的,也就是不带时钟边沿的,综合出来还是组合逻辑(2)、always后的敏感表中是(posedge clk)形式的,也就是带边沿的,综合出来一般是时序逻辑,会包含触发器(FlipFlop)在设计中,输入信号一般来说你是不知道上一级是寄存器输出还是组合逻辑输出,那么对于本级来说就是一根导线,也就是wire型。而输出信号则由你自己来决定是寄存器输出还是组合逻辑输出,wire型、reg型都可以。但一般的,整个设计的外部输出(即最顶层模块的输出),要求是寄存器输出,较稳定、扇出能力也较好。*Well I had this doubt when I was learning Verilog: What is the difference between reg and wire? Well I wont tell stories to explain this, rather I will give you some examples to show the difference. There is something else about wire which sometimes confuses. wire data types can be used for connecting the output port to the actual driver. Below is the code which when synthesized gives a AND gate as output, as we know a AND gate can drive a load.view plaincopy to clipboardprint?module wire_example( a, b, y); input a, b; output y; wire a, b, y; assign y = a & b; endmodule module wire_example( a, b, y);input a, b;output y;wire a, b, y;assign y = a & b;endmoduleSYNTHESIS OUTPUT What this implies is that wire is used for designing combinational logic, as we all know that this kind of logic can not store a value. As you can see from the example above, a wire can be assigned a value by an assign statement. Default data type is wire: this means that if you declare a variable without specifying reg or wire, it will be a 1-bit wide wire. Now, coming to reg data type, reg can store value and drive strength. Something that we need to know about reg is that it can be used for modeling both combinational and sequential logic. Reg data type can be driven from initial and always block.Reg data type as Combinational elementview plaincopy to clipboardprint?module reg_combo_example( a, b, y); input a, b; output y; reg y; wire a, b; always ( a or b) begin y = a & b; end endmodule module reg_combo_example( a, b, y);input a, b;output y; reg y;wire a, b; always ( a or b)begin y = a & b;endendmoduleSYNTHESIS OUTPUT This gives the same output as that of the assign statement, with the only difference that y is declared as reg. There are distinct advantages to have reg modeLED as combinational element; reg type is useful when a case statement is required (refer to the Verilog section for more on this). To model a sequential element using reg, we need to have edge sensitive variables in the sensitivity list of the always block.Reg data type as Sequential elementview plaincopy to clipboardprint?module reg_seq_example( clk, reset, d, q); input clk, reset, d; output q; reg q; wire clk, reset, d; always (posedge clk or posedge reset) if (reset) begin q = 1b0; end else begin q = d; end endmodule module reg_seq_example( clk, reset, d, q);input clk, reset, d;output q; reg q;wire clk, reset, d;always (posedge clk or posedge reset)if (reset) begin q = 1b0;end else begin q = d;endendmoduleSYNTHESIS OUTPUT There is a difference in the way we assign to reg when modeling combinational logic: in this logic we use blocking assignments while modeling sequential logic we use nonblocking ones. From the college days we know that wire is something which connects two points, and thus does not have any
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 入职安全培训模板下载课件
- 我和班有个约定+课件-2025-2026学年高一上学期开学第一课主题班会
- 健康瑜伽专业知识培训课件
- 供热基础知识培训内容课件
- 琼山中学2025-2026学年物理高三上期末达标检测模拟试题
- 2024-2025学年广东省广州七中高一(上)期中语文试卷
- 涉税从业人员管理办法
- 电网基建现场管理办法
- 綦江人才引进管理办法
- 管理助学资金管理办法
- 塔吊监控合同模板
- 贵州珍酒酿酒有限公司招聘笔试题库2024
- JG-T 225-2020 预应力混凝土用金属波纹管
- Welcome+unit +and+Expressions+单词讲解课件 【知识精讲精研】高中英语人教版必修第一册
- 电力建设施工技术规范 第5部分:管道及系统-DLT 5190.5
- “1+X”幼儿照护技能等级证书(中级)考试题库(多选、判断题)
- 摩托车的行车灯光与警示信号
- 中国石油天然气股份有限公司油气田站场目视化设计规定
- 核医学医学影像医技科室质量评估细则
- 体育与健康(水平二)《投掷(18课时)》大单元教学计划
- 培训记录表(模板)
评论
0/150
提交评论