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

/  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

Shift Register(Using Submodule)的更多相关文章

  1. 阅读 RAM-Based Shift Register(ALTSHIFT_TAPS) IP Core User Guide

    阅读 RAM-Based Shift Register(ALTSHIFT_TAPS) IP Core User Guide 说明:本文档自带测试工程: DE_ALTSHIFT_TAPS.zip 1.支 ...

  2. Shift Register

    /*************************************************** /  Shift Register module /  Programing by seong ...

  3. RAM-Based Shift Register (ALTSHIFT_TAPS) IP Core-实现3X3像素阵列存储

    最近想要实现CNN的FPGA加速处理,首先明确在CNN计算的过程中,因为卷积运算是最耗时间的,因此只要将卷积运算在FPGA上并行实现,即可完成部分运算的加速 那么对于卷积的FPGA实现首先要考虑的是卷 ...

  4. spi子系统之驱动SSD1306 OLED

    spi子系统之驱动SSD1306 OLED 接触Linux之前,曾以为读源码可以更快的学习软件,于是前几个博客都是一边读源码一边添加注释,甚至精读到每一行代码,实际上效果并不理想,看过之后就忘记了.主 ...

  5. SPI总线

    一.概述. SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控 ...

  6. [转]什么是SPI通信

    SPI:高速同步串行口.3-4线接口,收发独立.可同步进行. SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口.是Motorola首先在其MC6 ...

  7. [SPI]SPI协议详解

    转自:https://my.oschina.net/freeblues/blog/67400 1.SPI协议简介 1.1.SPI协议概括 SPI,是英语Serial Peripheral interf ...

  8. I2C总线和S5PV210的I2C总线控制器

    一.什么是I2C通信协议? 1.物理接口:SCL + SDA (1)SCL(serial clock):时钟线,传输CLK信号,一般是I2C主设备向从设备提供时钟的通道. (2)SDA(serial ...

  9. Working Set缓存算法(转)

    为了加深对缓存算法的理解,特转此篇,又由于本文内容过多,故不做翻译,原文地址Working Set页面置换算法 In the purest form of paging, processes are ...

随机推荐

  1. 27、Django实战第27天:全局搜索功能开发

    当我们选择其中一个类别(公开课,课程讲师,授课老师),输入搜索内容,点击搜索后会跳转到相应的列表页中进行展示 我们输入的内容作为参数keyword传入后台 搜索"公开课" 当课程中 ...

  2. telnet执行过程及验证远程服务器是否打开

    telnet执行过程: 工作原理: 当你用Telnet登录进入远程计算机系统时,你事实上启动了两个程序,一个 叫Telnet客户程序,它运行在你的本地机上:另一个叫Telnet服务器程序,它运 行在你 ...

  3. AxureRP7超强部件库打包下载

    摘要: 很多刚刚开始学习Axure的朋友都喜欢到网上搜罗各种部件库(组件库)widgets library ,但是网络中真正实用的并且适合你使用的少之又少,最好的办法就是自己制作适合自己工作内容的部件 ...

  4. Java加密解密大全

    ChinaSEI系列讲义(By 郭克华)   Java加密解密方法大全                     如果有文字等小错,请多包涵.在不盈利的情况下,欢迎免费传播. 版权所有.郭克华 本讲义经 ...

  5. POJ 2315:Football Game(博弈论)

    [题目链接] http://poj.org/problem?id=2315 [题目大意] 两名球员轮流从N个球中挑出不多于M个射门,每个球半径都是R,离球门S. 每次只能踢出L以内的距离.进最后一个球 ...

  6. 【动态规划】UVALive - 4888 - Railroad

    f(i,j)表示从A序列前面取i个,从B序列前面取j个时,能否拼成C序列.转移自行脑补. A train yard is a complex series of railroad tracks for ...

  7. 【动态规划】【最长上升子序列】【贪心】bzoj1046 [HAOI2007]上升序列

    nlogn求出最长上升子序列长度. 对每次询问,贪心地回答.设输入为x.当前数a[i]可能成为答案序列中的第k个,则若 f[i]>=x-k && a[i]>ans[k-1] ...

  8. Problem B: 调用函数,求1!+2!+3!+......+10!

    #include<stdio.h> double fact(int i); int main() { int i; ; ;i<=;i++) sum=sum+fact(i); prin ...

  9. 《深入理解Spark-核心思想与源码分析》(三)第三章SparkContext的初始化

    3.1 SparkContext概述 SparkConf负责配置参数,主要通过ConcurrentHaspMap来维护各种Spark的配置属性. class SparkConf(loadDefault ...

  10. Word调整表格大小

    在Word文档中创建表格后,用户往往需要根据输入的内容调整表格的行高和列宽,有时也需要对整个表格的大小进行调整. 在选择的表格上右击,选择快捷菜单中的“自动调整”—“根据内容调整表格”命令,Word将 ...