Verilog中关于总线的代码

书第271页

1。n位寄存器代码:

module  regn(R,Rin,clk,Q);

//Rin含义:若Rin=1,则组成寄存器的n个触发器被来自于输入信号R的n个数位加载,否则这n个触发器保持当前数据不变。

    parameter n=8;

    input [n-1:0] R;

    input Rin,clk;

    output [n-1:0]  reg Q;

 

    always  @(posedge clk)

         if(Rin)

             Q<=R;

 

endmodule

 

2.n位三态模块代码:

module trin(Y,E,F);

   parameter  n=8;

   input [n-1:0] Y;

   input E;

   output  [n-1:0]  F;

 

   assign F=E?Y:'bx;//我们不能把高阻态定义为n'bz,因为verilog语法规定不能使用参数来规定位数的大小。

 

endmodule

 

 

3.移位寄存器实现的控制电路代码:

module  shiftregister(reset,w,clk,Q);

    parameter m=4;

    input reset,w,clock;

    output  [1:m]  reg Q;

    integer k;

 

    always  @(negedge reset,posedge clk)

          if(!reset)

              Q<=0;

          else

          begin

             for(k=m;k>1;k=k-1)

                  Q[k]<=Q[k-1];

             Q[1]<=w;

           end

 

 endmodule

 

 

4.与图7-60类似的数字系统:

module swap(D,reset,w,clk,Extern,RinExt,Bus);

    input [7:0] D;

    input w,clk,Extern;

    input [7:0]  RinExt;

    output tri [7:0] Bus;

    wire [1:3]  Rin,Rout,Q;

    wire [7:0] R1,R2,R3;

 

     shiftr control(reset,w,clk,Q);

               defparam control.m=3;

   

 

 

 

    

你可能感兴趣的:(verilog)