【无标题】

1、Error (10158): Verilog HDL Module Declaration error at h_adder.v(1): port "co" is not declared as port(错误(10158):h_adder.v(1)处的Verilog HDL模块声明错误:端口“co”未声明为端口)

解法:加上outputXXX

2、Error (10137): Verilog HDL Procedural Assignment error at h_adder.v(7): object "so" on left-hand side of assignment must have a variable data type(错误(10137):h_adder.v(7)处的Verilog HDL过程分配错误:分配左侧的对象“so”必须具有可变数据类型)

解法:左边数据类型错误,更改为reg

wire型变量存在于begin...end语句之外。只能用assign语句进行赋值。(assign语句和时钟无关,只要等号右侧变量改变,左侧变量就会随之发生改变)

reg型相当于储存器的基础上,可以看做是一个一个的寄存器,当触发条件达成时,寄存器的内容才发生改变,否则一直保持上一个状态。

由此:reg型变量存在于begin...end语句之中。一般在always,initial语句中

原文链接:https://blog.csdn.net/zpc0212/article/details/82715685

参考:wire(组合逻辑)
wire用来连接模块实例化的输入和输出端口;
wire用作实际模块声明中输入和输出;
wire 元素必须由某些东西驱动,并且在没有被驱动的情况下,无法存储值;
wire 元素不能用在 always模块中 = 或者 <= 的左边;
wire元素是assign语句左侧 唯一的合法类型;
wire 元素是在基于Verilog的设计中连接两片的无状态方式;
wire 只能用在 组合逻辑;
reg 和 wire类似,但它可以用来存储信息(状态),就像寄存器
reg可以连接到模块实例化的输入端口;
reg 不能连接到模块实例化的输出端口;
reg 可以用作实际模块声明中的输出;
reg 不能 用作实际模块声明中的输入;
reg是always 模块中 = 或者 <= 左侧的唯一正确类型;
reg是initial模块中 = 左侧唯一的合法类型;
reg**不能用在assign的左边**;
reg 当与always @(posedge Clock)块结合使用时,reg可用于创建寄存器。
原文链接:https://blog.csdn.net/u012292754/article/details/72674776

3、“always @(*)”中‘*’所代表的意思

简单来说就是*代表着对输出语句有影响的输入量的变化,可参考以下文章

always@(*)里面的敏感变量为*,参考:http://t.csdn.cn/AfUL4以及http://t.csdn.cn/JfzYW

4、VHDL基本知识

vhdl 初学 - wuzangtian的日志 - 电子工程世界-论坛

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值