简单 串并转换 程序求助
module se_pa(rst,clk,data_in,data_out);
input clk,rst;
input data_in;
output data_out;
reg data_out;
reg para_out;
reg count;
always@(posedge clk)
begin
if(rst)
begin
count <= 2'b00;
end
else
begin
count <= count + 2'b01;
end
end
always@(posedge clk)
begin
if(rst)
begin
para_out <= 4'b0000;
end
else
begin
para_out <= {para_out,data_in};
end
end
always@(posedge clk)
begin
if(rst)
begin
data_out <= 0;
end
else if(count == 2'b11)
begin
data_out <= para_out;
end
end
endmodule
module t;
// Inputs
reg rst;
reg clk;
reg data_in;
// Outputs
wire data_out;
// Instantiate the Unit Under Test (UUT)
se_pa uut (
.rst(rst),
.clk(clk),
.data_in(data_in),
.data_out(data_out)
);
initial begin
// Initialize Inputs
rst = 1;
clk = 0;
data_in = 0;
// Wait 100 ns for global reset to finish
#10 rst = 0;
#10 data_in = 1;
#10 data_in = 0;
#10 data_in = 1;
#10 data_in = 1;
#10 data_in = 0;
#10 data_in = 1;
#10 data_in = 0;
#10 data_in = 1;
#10 data_in = 1;
#10 data_in = 1;
#10 data_in = 0;
// Add stimulus here
end
always #50 clk = ~clk;
endmodule
输出不知道为什么不对 请高手 看看程序 指点一二 谢谢了 输出是什么?怎么不对了?能说详细点吗? 对verilog不太熟悉,学习一下!!!!!!!! 测试代码部分的最后,always #50 clk = ~clk;#50改成#5,估计是你手误,哪有那么大周期的时钟,呵呵,很明显与输入数据周期不一致嘛 回复 4# beyond5165897
多谢高手指点...问题解决 恭喜恭喜啊,呵呵!!!!!!!!!!! 就是,仿真的周期也太大了吧,连赋了几个值,周期还没变化一次
页:
[1]