module signalcreat(clk,out);
input clk;
reg[5:0] data;
reg a;
output out;
reg out;
initial
begin
a=1;
data=6'b100111;
out=1;
end
always@(posedge clk)
begin
a<=data[5];//记录data移位之前的最高位
data<=(data<<1);
data[0]<=a;//将data原来的最高位反馈到移位后的data的最低位
out<=data[5];
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
此帖出自
小平头技术问答
程序分析如下:
初始化:
寄存器a 赋值1;寄存器data 赋值100111; 输出OUT 初始为1;
always 模块的作用:
a<=data[5]; // 该程序执行的结果,使得a=1;
data<=(data<<1); //程序执行的结果,使得data=001110;
data[0]<=a; //程序; // 程序执行的结果,使得data=001111;
不知道,上面这种执行结果是否符合要求!!!!!!!
一周热门 更多>