只记载疑难杂症!!!

只记载疑难杂症!!!奇奇怪怪的问题太多了,那就记个错题集吧!

1.Error (10170): Verilog HDL syntax error at mcp4822.v(18) near text: “output”; expecting “)”. Check for and fix any syntax errors that appear immediately before or at the specified keyword. The Intel FPGA Knowledge Database contains many articles with specific details on how to resolve this error. Visit the Knowledge Database at https://www.altera.com/support/support-resources/knowledge-base/search.html and search for this specific error message number.
这种问题要么检查上一行或者下一行的标点符号是不是中文的,要么就是另外一种了,如图:
之前我写的时候在module模块里面也可以写 clk,然后去外面写 input clk;之类的。当然也可以直接在模块中写 input clk; 但是这两种是不能混着用的,要么全在模块外定义,要么全在模块内定义!
之前我写的时候在module模块里面也可以写  clk,然后去外面写 input clk;之类的。当然也可以直接在模块中写 input clk; 但是这两种是不能混着用的,要么全在模块外定义,要么全在模块内定义!长见识了。。。
改成这样之后,编译通过。。。
改成这样之后,编译通过。。。
2. Error (10663): Verilog HDL Port Connection error at top.v(298): output or inout port “xxx” must be connected to a structural net expression
子模块调用到主模块要用WIRE型,不能两边都用REG,可以用wire转一下,比如子模块 output reg A ,主模块也是output reg A ,不能直接在模块调用里面写 . A (A),这样, 要先转一个中间变量,比如在主模块加一个 wire A1 ,然后 A <= A1; 模块调用里写 . A (A1), 就可以了。

3.Warning (10240): Verilog HDL Always Construct warning at J02ad5165.v(57): inferring latch(es) for variable “XXX”, which holds its previous value in one or more paths through the always construct
这个问题找了好久,去网上也查了,都没有解决,最后找了个大佬才知道是产生了latch,写代码的时候规范一点。if 。。。 else if 。。。else 一定要写全了,不然就会产生锁存器。
时序逻辑,if后面没else没事。
case,不管遍不遍历,最后写个default。
组合逻辑,最后一定得是else结尾。
if else组合可以对一个逻辑的真与假都进行定义,就是所有的情况你都描述了。
要是不写else,就会出现判断逻辑为真的时候运行,但是假的时候你没说要它干啥,他就停那不动了,等待下一个指令到来再进行工作。
时序逻辑没影响是因为来个时钟就刷新了,但鬼知道你组合逻辑的控制变量啥时候变。(大佬如是说)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

孔小贱

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

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

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

打赏作者

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

抵扣说明:

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

余额充值