【问题标题】:Array output in verilogverilog 中的数组输出
【发布时间】:2016-05-14 21:28:20
【问题描述】:

我正在做一个学校作业,我在输出一个值为 1 的数组时遇到了困难。我使用了这段代码,但模拟器不断用 X 填充信号条

    integer index = 0;
initial
begin
for(index=0;index<=7;index = index+1)
    begin
     data_out[index]<=1;
    end
end
endmodule

data_out 被声明为output reg [7:0]data_out

谁能给我建议?

【问题讨论】:

  • 我以 reg [7:0] data_out_test 的方式连接了 data_out 输出并对其进行了初始化 .data_out(data_out_test);
  • 您需要显示更多代码以帮助跟踪此问题。可能出错的地方太多了。创建一个MCVE 并编辑您的问题以包含它。如果您提供一个完整的示例,我可以将其复制到文本编辑器中并运行,我可以对其进行测试。
  • 我建议你创建一个 MCVE 有两个原因:1)这样做时你经常会自己找出错误,2)错误可能是声明和你的分配不匹配'正在显示,模块是如何连接的,或者你是如何打印的。由于您只展示了这三个中的一个,因此我们无法帮助您找到它。
  • 我明天会发布一个 MCVE,尽管我很难解释整个程序。我希望这是一个声明错误,并且可以轻松解决。
  • 您为什么使用initial 而不是always 块?这是用于测试平台的吗?

标签: arrays for-loop output verilog xilinx


【解决方案1】:

它现在可以工作了,因为我使用了 wire[7:0] data_out_test 并且总是阻塞。谢谢你的回答

好的,接下来。我有一个由 posedge 时钟和另一个变量 suma_de_1 的降序计数器,其值为 12。计数器的星号从 31 到 0,我有以下 if 条件

`integer index = 0;
always@(posedge clock) begin
for(index=0;index<=31;index = index+1) 
begin 
if(count > suma_de_1) 
data_out[index]<=2'b00; 
else data_out[index]<=1; 
end end` 

检查一下以查看结果waveform

此时 count 变得小于 suma_de_1 但它创建了另一个数组。我希望它完成之前充满0的数组。 希望我足够清楚。我想要一个数组中的输出,而不是两个

【讨论】:

  • 如果您要提出后续问题,请提出一个新问题,并在那里提出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多