我想在脑海中做的是取8个1位输入并计算1' s。然后代表那些1。
01010111应输出0101(输入中有5个1'
module 8to4 (in,out,hold,clk,reset);
input [7:0] in; //1 bit inputs
reg [7:0] hold; //possible use for case statement
output [3:0] out; //Shows the count of bits
always @(clk)
begin
out = in[0] + in[1] + in[2] + in[3] + in[4] + in[5] + in[6] + in[7]; //Adds the inputs from testbench and outputs it
end
endmodule
问题:
我对verilog很陌生,所以我甚至不想考虑一个测试平台。
答案 0 :(得分:0)
您编写它的方式可能是编写它的更好方法,因为它可以更容易地参数化位数。但从技术上讲,你有一个8位输入。
module 8to4 #(parameter WIDTH=8) (input [WIDTH-1:0] in,
output reg [3:0] out,hold,
input clk,reset);
reg [WIDTH-1:0] temp;
integer ii;
always @(clk)
begin
temp = 0;
for(ii=0; ii<WIDTH; i = i + 1)
temp = temp + in[ii];
out <= temp;
end
endmodule
答案 1 :(得分:0)
逻辑上代码是正确的。
但是你可以改进它,如下所示。
out
设为reg
,因为您是在程序转让中使用它。reset
的用法。理想情况下,任何代码都应该具有重置状态,这在代码中是缺失的。hold
,clk
&amp;的方向(输入/输出) reset
端口,当前未指定。parameters
代码。