程序怎么结果不对,请帮忙分析!

2019-03-25 10:36发布

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 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
eeleader
1楼-- · 2019-03-25 16:09
< /

程序分析如下:

 

初始化:

    寄存器a 赋值1;寄存器data 赋值100111; 输出OUT 初始为1;

 

always 模块的作用:

   a<=data[5]; // 该程序执行的结果,使得a=1;

   data<=(data<<1); //程序执行的结果,使得data=001110;

   data[0]<=a; //程序; // 程序执行的结果,使得data=001111;

 

不知道,上面这种执行结果是否符合要求!!!!!!!

一周热门 更多>