/***************************************************

/  Shift Register module by Submodule

/  Programing by seongki

***************************************************/

module Shift_Register_4_str(output [3:0] A_par,input [3:0] I_par,input s1,s0,MSB_in,LSB_in,CLK,Clear);

wire [1:0] select;

assign select = {s1,s0};

stage ST0(I_par[0],I_par[1],LSB_in,I_par[0],A_par[0],select,CLK,Clear);

stage ST1(I_par[1],I_par[2],I_par[0],I_par[1],A_par[1],select,CLK,Clear);

stage ST2(I_par[2],I_par[3],I_par[1],I_par[2],A_par[2],select,CLK,Clear);

stage ST3(I_par[3],MSB_in,I_par[2],I_par[3],A_par[3],select,CLK,Clear);

endmodule

module stage(i0,i1,i2,i3,Q,select,CLK,Clr);

input i0,i1,i2,i3, CLK,Clr;

output Q;

input [1:0] select;

wire mux_out;

Mux_4x_1 M0(mux_out,i0,i1,i2,i3,select);

D_flip_flop M1(Q,mux_out,CLK,Clr);

endmodule

module Mux_4x_1(mux_out,i0,i1,i2,i3,select);

output mux_out;

input i0,i1,i2,i3;

input [1:0] select;

reg mux_out;

always@(select,i0,i1,i2,i3)

case(select)

2'b00:mux_out=i0;

2'b01:mux_out=i1;

2'b10:mux_out=i2;

2'b11:mux_out=i3;

endcase

endmodule

module D_flip_flop(Q,D,CLK,Clr);

output Q;

input D,CLK,Clr;

reg Q;

always@(posedge CLK, negedge Clr)

if(~Clr) Q<=0;

else Q<=D;

endmodule

//testbench

`timescale 1ns/1ns

module tb_Shift_Register_Structural_model;

reg [3:0] I_par;

reg s1,s0,MSB_in,LSB_in,CLK,Clear;

wire [3:0] A_par;

Shift_Register_4_str test1(A_par,I_par,s1,s0,MSB_in,LSB_in,CLK,Clear);

initial

  begin

    I_par=4'b1111;

    Clear=0; MSB_in=0; LSB_in=0; CLK=0; s1=0; s0=0;

    #10 CLK=0;

    #10 CLK=1;

    #10 CLK=0;

    #10 CLK=1;

    #10 CLK=0;

    #10 CLK=1;

    #10 Clear=1; MSB_in=0; LSB_in=0; CLK=0; s1=0; s0=0;

    #10 CLK=0;

    #10 CLK=1;

    #10 CLK=0;

    #10 CLK=1;

    #10 CLK=0;

    #10 CLK=1;

    #10 Clear=1; MSB_in=0; LSB_in=0; CLK=0; s1=0; s0=1;

    #10 CLK=0;

    #10 CLK=1;

    #10 CLK=0;

    #10 CLK=1;

    #10 CLK=0;

    #10 CLK=1;

    #10 Clear=1; MSB_in=0; LSB_in=0; CLK=0; s1=1; s0=0;

    #10 CLK=0;

    #10 CLK=1;

    #10 CLK=0;

    #10 CLK=1;

    #10 CLK=0;

    #10 CLK=1;

    #10 Clear=1; MSB_in=0; LSB_in=0; CLK=0; s1=1; s0=1;

    #10 CLK=0;

    #10 CLK=1;

    #10 CLK=0;

    #10 CLK=1;

    #10 CLK=0;

    #10 CLK=1;

    #10 CLK=0;

  end

endmodule

最新文章

  1. Hibernate入门案例及增删改查
  2. C# 委托和事件(二):使用.Net框架中的EventArgs和EventHandler
  3. 动态加载故事storyboard
  4. 10 harsh truths that will help you grow
  5. 判断mysqli函数里的sql语句是否有错和影响行数
  6. eclipse导入myeclipse的web项目没法识别问题解决方法
  7. BestCoder Round#8 1003
  8. 老司机带你开飞机 一: mssql on linux 安装指导
  9. VB6之调整任务栏按钮的位置
  10. asp.net core 2.1认证
  11. c#清空文本文件
  12. Linux环境下使用Android NDK编译c/c++生成可执行文件
  13. Windows Dll Injection、Process Injection、API Hook、DLL后门/恶意程序入侵技术
  14. Java 泛型 介绍
  15. java4/9 异常处理
  16. Mysql 5.7.21 单机多实例安装
  17. python 全栈开发,Day113(方法和函数的区别,yield,反射)
  18. 找不到命令 ifconfig
  19. 关于css浮动的一点思考
  20. hdu 5007 水题 (2014西安网赛A题)

热门文章

  1. AOJ 2230 How to Create a Good Game(费用流)
  2. 【点分治】bzoj1468 Tree
  3. 【分块】bzoj1798 [Ahoi2009]Seq 维护序列seq
  4. Awesome图标 | 如何在某些编辑软件中使用Font Awesome字体图标
  5. WPF在代码中创建DataTemplate时候的异常
  6. 连接sqlexpress
  7. Error: Top-level design entity &quot;demo&quot; is undefined
  8. (如何理解gamma校准)GAMMA测试方法及分析
  9. Key-Value Observing (键值监測)
  10. Python 爬基金数据