球verilog高手帮忙,我的程序怎么结果不对呀???
这是我的程序module signalcreat(clk,out);
input clk;
reg data;
reg a;
output out;
reg out;
initial
begin
a=1;
data=6'b100111;
out=1;
end
always@(posedge clk)
begin
a<=data;//记录data移位之前的最高位
data<=(data<<1);
data<=a;//将data原来的最高位反馈到移位后的data的最低位
out<=data;
end
initial #1000 $stop;
endmodule
测试模块是
`timescale 10ns/1ns
module signalcreat_tb;
reg clk;
wire out;
initial
clk=0;
always
#5 clk=~clk;
signalcreat U(clk,out);
initial $monitor($time,,,"clk=%d out=%d",clk,out);
endmodule 我写的是100111序列信号发生器 顶………… 我觉得问题是不是你只定义了一个DATA,然后你移位后,又把其中的一个数放进去,这个有点不合理吧,你应该再多定义一个中间变量啊。。。。 回复 4# weibode01
怎么定义啊帮帮我吧 变量a是不是应该定义成1位? 就是多一个REG变量啊。。。。 不行,你的思路好像是单片机的逐条执行吧。。。如果你想产生100111信号的话,我觉得用状态机还好一点。。。 回复 1# 竹林听雨早晨
module sigcreat(clk,rst,out);
input clk,rst;
reg data;
output out;
reg out;
always @(posedge clk )
if(rst)
data<=6'b100101;
else
begin
out<=data;
data<={data,data};
end
endmodule
这个修改后的可以 诶,是什么原因呢
页:
[1]
2