首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MyHDL生成的Verilog代码中缺少的输出端口

MyHDL生成的Verilog代码中缺少的输出端口
EN

Stack Overflow用户
提问于 2017-01-11 23:42:23
回答 2查看 197关注 0票数 1

我正在尝试从以下MyHDL模块生成verilog模块:

top.py:

代码语言:javascript
复制
from myhdl import *
from counter import Counter

def Top(clkIn, leds):
    counter = Counter(clkIn, leds)
    return counter

clkIn = Signal(bool(0))
leds = intbv(0)[8:0]

toVerilog(Top, clkIn, leds)

和,

counter.py:

代码语言:javascript
复制
from myhdl import *

def Counter(clk, count):
    c = Signal(modbv(0)[8:0])

    @always(clk.posedge)
    def logic():
        c.next = c + 1

    @always_comb
    def outputs():
        count.next = c

    return logic, outputs

但是,在生成的文件的模块定义中,(第1-3行)

顶五:

代码语言:javascript
复制
module top (
    clkIn
);

input clkIn;
reg [7:0] counter_c;

always @(posedge clkIn) begin: TOP_COUNTER_LOGIC
    counter_c <= (counter_c + 1);
end

assign count = counter_c;

endmodule

leds[7:0]失踪了。即使这些LED是未使用的,我需要他们为我的合成器分配他们到适当的插脚在开发板上。为什么MyHDL要忽略它们?我怎么才能把它们包括进去呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-14 15:46:50

leds = intbv(0)[8:0]转换为leds = Signal(intbv(0)[8:0])。模块(输出)端口需要声明为Signal

票数 3
EN

Stack Overflow用户

发布于 2017-01-14 08:21:42

在模块顶层设计中,您没有将leds声明为输出。在clkIn上定义了一个输入。大多数合成器将检查逻辑是否驱动输出或其他可见的,或保持逻辑。如果合成器确定没有任何可能的方式告诉您,leds是存在于设计外部,它可能只是优化它,以及任何专门的逻辑驱动它,走开。

如果这是Altera,有一个名为虚拟引脚的qsf分配,可以分配给leds,以保存它。但简单的事情是添加leds到模块顶部引脚定义,并分配它作为一个输出。

根据Alper的评论,您没有对任何事情进行计数。那需要解决。

此外,您也不能在计数器定义中初始化计数器。这可能在综合中起作用,因为逻辑要么将输入到零,要么输入其他确定性值,但在模拟中,该值可能(可能/将)仍然未知。如果可以的话,可以得到一个复位信号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41602796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档