Shift Register(Using Submodule)
/***************************************************
/ 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
最新文章
- Hibernate入门案例及增删改查
- C# 委托和事件(二):使用.Net框架中的EventArgs和EventHandler
- 动态加载故事storyboard
- 10 harsh truths that will help you grow
- 判断mysqli函数里的sql语句是否有错和影响行数
- eclipse导入myeclipse的web项目没法识别问题解决方法
- BestCoder Round#8 1003
- 老司机带你开飞机 一: mssql on linux 安装指导
- VB6之调整任务栏按钮的位置
- asp.net core 2.1认证
- c#清空文本文件
- Linux环境下使用Android NDK编译c/c++生成可执行文件
- Windows Dll Injection、Process Injection、API Hook、DLL后门/恶意程序入侵技术
- Java 泛型 介绍
- java4/9 异常处理
- Mysql 5.7.21 单机多实例安装
- python 全栈开发,Day113(方法和函数的区别,yield,反射)
- 找不到命令 ifconfig
- 关于css浮动的一点思考
- hdu 5007 水题 (2014西安网赛A题)
热门文章
- AOJ 2230 How to Create a Good Game(费用流)
- 【点分治】bzoj1468 Tree
- 【分块】bzoj1798 [Ahoi2009]Seq 维护序列seq
- Awesome图标 | 如何在某些编辑软件中使用Font Awesome字体图标
- WPF在代码中创建DataTemplate时候的异常
- 连接sqlexpress
- Error: Top-level design entity ";demo"; is undefined
- (如何理解gamma校准)GAMMA测试方法及分析
- Key-Value Observing (键值监測)
- Python 爬基金数据