【发布时间】:2016-12-10 13:58:10
【问题描述】:
所以我试图在 FPGA 中输出变量的位。有两个不同的变量:count 和 dataout。代码如下:
module control_LED
( //input [7:0] input_value,
input Clk,
//input reset,
//output reg [7:0] dataout
output led,led2,led3,led4,led5,led6,led7,led8
);
parameter DWIDTH = 8, WORDS = 30;
reg [27:0] count;
reg [7:0] dataout;
reg [DWIDTH-1:0]sine[WORDS-1:0];
//reg [7:0] temp;
initial begin
count = 0;
dataout = 0;
sine[0] = 77;
sine[1] = 74;
sine[2] = 67;
sine[3] = 58;
sine[4] = 45;
sine[5] = 31;
sine[6] = 16;
sine[7] = 0;
sine[8] = 7;
sine[9] = 8'd74;
sine[10] = 8'd67;
sine[11] = 8'd58;
sine[12] = 8'd45;
sine[13] = 8'd31;
sine[14] = 8'd16;
sine[15] = 8'd0;
sine[16] = -16;
sine[17] = -31;
sine[18] = -45;
sine[19] = -58;
sine[20] = -67;
sine[21] = -74;
sine[22] = -77;
sine[23] = -77;
sine[24] = -74;
sine[25] = -67;
sine[26] = -58;
sine[27] = -45;
sine[28] = -31;
sine[29] = -16;
end
always@ (posedge Clk)
begin
if (count > 14) begin
count<=0;
dataout<=0;
end
else begin
count<=count+1;
//dataout<=dataout+1;
dataout <=sine[count];
//dataout <=sine[count];
/*led <= sine[count][7];
led2 <= sine[count][6];
led3 <= sine[count][5];
led4 <= sine[count][4];
led5 <= sine[count][3];
led6 <= sine[count][2];
led7 <= sine[count][1];
led8 <= sine[count][0];*/
end
end
//assign dataout = sine[count];
/*assign led = count[7];
assign led2 = count[6];
assign led3 = count[5];
assign led4 = count[4];
assign led5 = count[3];
assign led6 = count[2];
assign led7 = count[1];
assign led8 = count[0];*/
assign led = dataout[7];
assign led2 = dataout[6];
assign led3 = dataout[5];
assign led4 = dataout[4];
assign led5 = dataout[3];
assign led6 = dataout[2];
assign led7 = dataout[1];
assign led8 = dataout[0];
endmodule
如果我将输出变量分配给计数变量中的位,会发生什么情况,FPGA 板输出引脚会给出一个干净的方波。但是,如果我将输出变量分配给 dataout 变量中的位,我不会。我不知道是什么原因造成的。我不是在寻找直接的答案,但我已经为此苦苦挣扎了一段时间。因此,如果有人可以给我一个提示或将我推向这个方向,我将不胜感激。 (我一直在尝试调试这个)。谢谢!
【问题讨论】:
-
是的,它支持初始块,是的,变量应该被签名。
-
有一个警告说“信号
已使用但从未分配”。但它是在初始块中分配的......