代码改错 // 信道编码模块 // 功能:实现信道编码功能 // // // module code_en_top( input clk_bs, //工作时钟 input bs_en, //位同步信号 input [N-1:0] en_code_in_d, //编码前数据输入 input en_code_in_en, //编码前数据有效信号输入 output reg [N:0] en_code_out_d, //编码后数据输出 output reg en_code_out_en, //编码后数据有效信号输出 output reg flag_p, output reg flag_n, ); reg [N-1:0] shift_reg; // 移位寄存器 reg [N-1:0] poly1 = {1'b1, 1'b0, 1'b1}; // 多项式1 reg [N-1:0] poly2 = {1'b1, 1'b1, 1'b1}; // 多项式2 always @(posedge clk_bs) begin if(bs_en) begin pulse <= 1'b1; end else begin pulse <= 1'b0; end if(bs_en) begin en_code_out_d <= {en_code_out_d[N-1:0], en_code_in_d}; end assign en_code_out_d = {shift_reg[0], shift_reg[1], shift_reg[2], shift_reg[3], shift_reg[4], shift_reg[4]^shift_reg[2]^shift_reg[1], shift_reg[4]^shift_reg[3]^shift_reg[2]^shift_reg[1]}; if(bs_en) begin shift_reg <= {shift_reg[N-2:0], en_code_in_d}; end end endmodule
时间: 2023-11-22 17:53:18 浏览: 96
代码改正:
```
// 信道编码模块
// 功能:实现信道编码功能
module code_en_top(
input clk_bs, // 工作时钟
input bs_en, // 位同步信号
input [N-1:0] en_code_in_d, // 编码前数据输入
input en_code_in_en, // 编码前数据有效信号输入
output reg [N:0] en_code_out_d, // 编码后数据输出
output reg en_code_out_en, // 编码后数据有效信号输出
output reg flag_p,
output reg flag_n
);
reg [N-1:0] shift_reg; // 移位寄存器
reg [N-1:0] poly1 = {1'b1, 1'b0, 1'b1}; // 多项式1
reg [N-1:0] poly2 = {1'b1, 1'b1, 1'b1}; // 多项式2
always @(posedge clk_bs) begin
if(bs_en) begin
en_code_out_d <= {en_code_out_d[N-1:0], en_code_in_d};
shift_reg <= {shift_reg[N-2:0], en_code_in_d};
en_code_out_en <= en_code_in_en;
end else begin
en_code_out_en <= 1'b0;
end
flag_p <= shift_reg[0];
flag_n <= shift_reg[N-1];
shift_reg <= {shift_reg[N-2:0], shift_reg[N-1]^shift_reg[2]^shift_reg[1]};
end
endmodule
```
主要改动:
1. 将 `assign` 语句改为在 `always` 块中的赋值语句
2. 在 `always` 块中同时更新 `en_code_out_d` 和 `shift_reg`
3. 添加 `en_code_out_en` 的赋值,使其在 `bs_en` 信号为高电平时有效
4. 添加 `flag_p` 和 `flag_n` 的赋值,分别为移位寄存器的最高位和最低位
阅读全文