Vivado将output定义为reg时遇到的问题

本文介绍了在使用Vivado进行FPGA设计时遇到的端口定义错误,包括将端口默认声明为wire类型却需要作为reg类型使用的情况。错误一中,未正确定义端口类型导致综合后LED端口位宽不明确;错误二和三涉及到变量重复定义的问题。解决方法是直接在端口声明时将其定义为output reg类型,避免在模块内部再次定义,确保综合结果正确显示端口位宽。
摘要由CSDN通过智能技术生成

vivado在定义端口时将端口默认为wire类型,如果想要把这个端口作为reg类型需要额外定义。

错误一

这是最狗的一种错误,vivado并不会报错,但综合时vivado就不知道led这个端口是多少位了,所以综合得到的原理图没有标识led是多少位,因此led也不能正确输出

`timescale 1ns / 1ps

module top(
input   sys_clk,
output  [3:0] led
);
reg led;  
always@(posedge sys_clk)
led=4'b0000;
      
endmodule

在这里插入图片描述

错误二

vivado会提示这个led变量被重复定义
在这里插入图片描述

错误三

虽然两处定义led都是定义为1位,但vivado仍然提示led这个变量被重复定义
在这里插入图片描述

正确的方法

最保险的方法是在端口声明时,一次性把端口led定义为output reg [3:0]定义完整

`timescale 1ns / 1ps

module top(
input   sys_clk,
output  reg [3:0] led
);

always@(posedge sys_clk)
led=4'b0000;
      
endmodule

综合得到的原理图,可见led作为output是4位
在这里插入图片描述

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据线

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值