还有就是我的模块:做线性反馈移位寄存器的不对模块的Verilog
module linear_feedback_shift_reg(clk, reset, data_out);
// PARAMETERS //
parameter REGISTER_WIDTH = 2; // width of initial and current states
parameter INIT_STATE = 0; // initialization state when reset process
parameter POLYNOMIAL = 3; // 0x11 -- x^2 + x + 1
parameter RESET_ACTIVE = 1; // reset process when reset port is RESET_ACTIVE
parameter CLK_ACTIVE = 1; // clk process when clk port is CLK_ACTIVE
// PORTS //
input wire clk;
input wire reset;
output reg data_out;
// VARIABLES //
reg [REGISTER_WIDTH - 1 : 0] polynomial;
reg [REGISTER_WIDTH - 1 : 0] current_state;
reg next_bit;
integer i;
// BEHAVIORAL
always @* begin
if(reset == RESET_ACTIVE) begin // reset process
current_state = INIT_STATE;
next_bit = 1'b0;
data_out = 1'b0;
polynomial = POLYNOMIAL;
end
else begin // clk process
if(clk == CLK_ACTIVE) begin
data_out = current_state[0];
next_bit = current_state[REGISTER_WIDTH - 1];
for(i = 0; i < REGISTER_WIDTH - 1; i = i + 1) begin
if(polynomial[i] == 1'b1) begin
next_bit = next_bit^current_state[i];
end
end
current_state = current_state >> 1;
current_state[REGISTER_WIDTH - 1] = next_bit;
end
end
end
endmodule
我使用Vivado 2017.1。当我运行综合时,结果是0个LUT,0个FF。
警告列表:
[合成器8-3936]找到未连接的内部寄存器 'polynomial_reg',它是从 '2' 修整以 '1' 个比特。
[合成器8-327]为推断变量 'data_out_reg'
[合成器8-327]推断闩为变量 'current_state_reg'
[合成器8-327]为推断变量闩“polynomial_reg闩'
[Synth 8-3332]顺序元素(data_out_reg)未使用,将从模块linear_feedback_shift_reg中移除。
[Synth 8-3332]顺序元素(current_state_reg [1])未使用,将从模块linear_feedback_shift_reg中移除。
[Synth 8-3332]顺序元素(current_state_reg [0])未使用,将从模块linear_feedback_shift_reg中移除。
我的模块有什么逻辑错误?
你计算next_bit但从来没有使用。 – Yahniukov
啊是的!感谢您发现错误。我现在更新了代码。 –
非常感谢您的帮助 – Yahniukov