急救 用verilog HDL语言设计一个m序列的生成程序,您之前有有解决过相关问题。
答案:1 悬赏:60 手机版
解决时间 2021-02-28 02:25
- 提问者网友:我的未来我做主
- 2021-02-27 17:20
急救 用verilog HDL语言设计一个m序列的生成程序,您之前有有解决过相关问题。
最佳答案
- 五星知识达人网友:山有枢
- 2021-02-27 18:32
我m序列代码赋值下来是,发现wire和x中间没有空格,这可能是导致你没有输出的原因,个人建议你的代码这样写:
module prbs(clk,rst,m_out);
input clk,rst;
output m_out;
reg[7:0] reg_buf;
reg x;
always@(posedge clk or posedge rst)
if(!rst)
begin
reg_buf[7:0] <= 8'b1000_0000;
x <= 1'b1;
end
else
begin
reg_buf[7:0] <= {reg_buf[6:0],x};
x <= reg_buf[7]^reg_buf[3]^reg_buf[2]^reg_buf[1];
end
assign m_out = reg_buf[7];
endmodule追问首先感谢您的回答,刚刚试了您的这个程序,但是我用我的 那个testbench仿真这个m序列产生,还是没输出的,请问您能帮我看下我的测试文件testbench 有没有写对哦。。麻烦你了。。追答module prbs(clk,rst,reg_buf,m_out);
input clk,rst;
input [7:0]reg_buf;
output m_out;
reg [7:0]reg_buf_r;
always@(posedge clk or posedge rst)
if(!rst)
reg_buf_r[7:0] <= 8'b1000_0000;
else
reg_buf_r[7:0] <= {reg_buf[6:0],reg_buf[7]^reg_buf[3]^reg_buf[2]^reg_buf[1]};
assign m_out = reg_buf_r[7];
endmodule
测试文件testbench:
`timescale 1ns/1ps// testbench.v
`include "prbs.v"
module testbench;
wire m_out;
reg[7:0]reg_buf;
reg clk;
reg rst;
prbs prbs(.m_out(m_out),.rst(rst),.reg_buf(reg_buf).clk(clk));
initial
begin
rst = 1'b1; #10 rst = 1'b0;
clk = 1'b1; forever #50 clk = ~clk;
end
always #50 reg_buf <= {$random} % 256;
endmodule
module prbs(clk,rst,m_out);
input clk,rst;
output m_out;
reg[7:0] reg_buf;
reg x;
always@(posedge clk or posedge rst)
if(!rst)
begin
reg_buf[7:0] <= 8'b1000_0000;
x <= 1'b1;
end
else
begin
reg_buf[7:0] <= {reg_buf[6:0],x};
x <= reg_buf[7]^reg_buf[3]^reg_buf[2]^reg_buf[1];
end
assign m_out = reg_buf[7];
endmodule追问首先感谢您的回答,刚刚试了您的这个程序,但是我用我的 那个testbench仿真这个m序列产生,还是没输出的,请问您能帮我看下我的测试文件testbench 有没有写对哦。。麻烦你了。。追答module prbs(clk,rst,reg_buf,m_out);
input clk,rst;
input [7:0]reg_buf;
output m_out;
reg [7:0]reg_buf_r;
always@(posedge clk or posedge rst)
if(!rst)
reg_buf_r[7:0] <= 8'b1000_0000;
else
reg_buf_r[7:0] <= {reg_buf[6:0],reg_buf[7]^reg_buf[3]^reg_buf[2]^reg_buf[1]};
assign m_out = reg_buf_r[7];
endmodule
测试文件testbench:
`timescale 1ns/1ps// testbench.v
`include "prbs.v"
module testbench;
wire m_out;
reg[7:0]reg_buf;
reg clk;
reg rst;
prbs prbs(.m_out(m_out),.rst(rst),.reg_buf(reg_buf).clk(clk));
initial
begin
rst = 1'b1; #10 rst = 1'b0;
clk = 1'b1; forever #50 clk = ~clk;
end
always #50 reg_buf <= {$random} % 256;
endmodule
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯