verilog中reg和wirefpga中wire和reg的区别别

3、ISE 路径中不要含有中文及空格否则打不开。ISE使用相对路径modelsim使用绝对路径。

4、输入型信号在处理前最好先与时钟同步一下否则出错都不好查。建立保持时间不满足競争啊冒险啊什么的,不懂

5、modelsim仿真时,头文件要放在工程的根目录否则modelsim会报错。

}

reg表示一定要有触发输出才会反映输入的状态。

reg相当于存储单元wire相当于物理连线。reg表示一定要有触发没有输入的时候可以保持原来的值,但不直接实际的硬件电路对應

      两者fpga中wire和reg的区别别是:寄存器型数据保持最后一次的赋值,而线型数据需要持续的驱动wire使用在连续赋值语句中,而reg使用在过程赋值語句(initial always)中。wire若无驱动器连接其值为z,reg默认初始值为不定值

     在连续赋值语句中表达式右侧的计算结果可以立即更新表达式的左侧。茬理解上相当于一个逻辑之后直接连了一条线,这个逻辑对应于表达式的右侧而这条线就对应于wire。在过程赋值语句中表达式右侧的計算结果在某种条件的触发下放到一个变量当中,而这个变量可以声明成reg类型的根据触发条件的不同,过程赋值语句可以建模不同的硬件结构:如果这个条件是时钟的上升沿或下降沿那么这个硬件模型就是一个触发器;如果这个条件是某一信号的高电平或低电平,那么這个硬件模型就是一个锁存器;如果这个条件是赋值语句右侧任意操作数的变化那么这个硬件模型就是一个组合逻辑

对组合逻辑输出變量可以直接用assign。即如果不指定为reg类型那么就默认为1位wire类型,故无需指定1位wire类型的变量当然专门指定出wire类型,可能是多位或为使程序易读wire只能被assign连续赋值,reg只能在initial和always中赋值

输入端口可以由wire/reg驱动,但输入端口只能是wire;输出端口可以是wire/reg类型输出端口只能驱动wire;若输絀端口在过程块中赋值则为reg型,若在过程块外赋值则为net型(wire/tri)用关键词inout声明一个双向端口, inout端口不能声明为reg类型,只能是wire类型

模块调用時 信号类型确定方法总结如下:

?信号可以分为端口信号内部信号。出现在端口列表中的信号是端口信号其它的信号为内部信号。

?對于端口信号输入端口只能是net类型。输出端口可以是net类型也可以是register类型。若输出端口在过程块中赋值则为register类型;若在过程块外赋值(包括实例化语句)则为net类型。

?内部信号类型与输出端口相同可以是net或register类型。判断方法也与输出端口相同若在过程块中赋值,则为register类型;若在过程块外赋值则为net类型。

?若信号既需要在过程块中赋值又需要在过程块外赋值。这种情况是有可能出现的如决断信号。這时需要一个中间信号转换

?用过程语句给一个net类型的或忘记声明类型的信号赋值。

?将实例的输出连接到声明为register类型的信号上

?将模块的输入信号声明为register类型。

}

我要回帖

更多关于 fpga中wire和reg的区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信