设计四位移位寄存器shifter_4

四位移位寄存器:由四个D触发器组成,当每来一个时钟上升沿时,四个触发器分别执行一次移位

要求
? 每个周期通过数据输入端din送入一比特数据
?每个周期通过数据输出端dout串行移出一比特数据
? 异步复位后四位寄存器的值为4’b0101, LSb优先移出

感觉移位寄存器也没什么太难的地方,自己唯一的收获是了解了如何既简便有快速的进行移位,这里就提到了verilog中的一个很方便的运算符号——拼接运算{},在以下代码中会用到,下来附上代码一段。

1)、shifter_4.v
        module shifter_4(din,clk,rst,dout);

   input din;
   input clk;
   input rst;
   output dout;

   wire dout;
   reg [3:0] t;

   assign dout = t[0];

   always @(posedge clk or negedge rst)
   begin
      if(!rst)
      begin

              t <= 4‘b0101;//赋初值
      end
      else
      begin
         t = {din,t[3],t[2],t[1]};//利用拼接符进行移位运算
      end
   end
   endmodule

测试程序:

2)、shifter_4_tb.v
`timescale 1ns/1ps
  module shifter_4_tb();

   reg din;
   reg clk;
   reg rst;
   wire dout;

   always #10 clk = ~clk;

   shifter_4 shifter_4_inst(
     .din(din),
     .clk(clk),
     .rst(rst),
     .dout(dout)
     );

     initial
     begin
        clk = 1‘b0;
        rst = 1‘b1;
        din = 1‘b1;//第一个移进的数
        #10 rst = 1‘b0;
        #10 rst = 1‘b1;
        #15 din = 1‘b0;//第二个移进的数
        #20 din = 1‘b1;//第三个
        #20 din = 1‘b0;//第四个
        #20 din = 1‘b1;//第五个
        #20 din = 1‘b0;   //第六个
     end
     endmodule

写移位寄存器可以奔着流水灯去,下一篇我将会为大家呈上流水灯的程序。我们程序员也会玩出精彩的花样。

时间: 2024-10-10 17:32:51

设计四位移位寄存器shifter_4的相关文章

单片机课程设计-四位加法计算器设计参考程序(c语言)

1 #include<reg52.h> 2 typedef unsigned char uint8; 3 typedef unsigned int uint16; 4 5 sbit rw=P2^5; 6 sbit rs=P2^6; 7 sbit e=P2^7; 8 sbit led=P3^7; 9 10 uint8 key,num,ei,eii,p; 11 uint8 fuhao;//定义具体的那个符号,是加减还是乘除. 12 uint8 flag; //定义有没有按下符号键,这个是统称 13

简易数字钟设计

简易数字钟设计 一.摘要 信息时代,时间观念深入人心,所以掌握数字钟的设计具有一定的时代意义,并且使用Multisim进行分立元件设计数字钟,可以大大提升个人数字电路的素养. 设计思路是从上至下,先进行数字钟整体框架的设计,考虑各个子芯片的预留端口,再逐个设计各个子电路模块.最终完成了时钟显示,调时,闹钟,定点报时以及万年历的功能.并且总的控制点预留了新功能的接入口,这样子就可以十分方便的进行新功能的加入. 目录 简易数字钟设计... 1 一.摘要... 1 二.前期准备... 2 1.数电知识

RTL基本知识:全加器设计(VHDL)

[设计要求] 使用层次化设计方法,用VHDL语言设计四位二进制全加器,并进行仿真. [设计目的] 考查对于VHDL元件例化语法的熟悉程度: 考查对于数字电路中全加器工作原理的理解: [设计思路] 用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器.一位全加器可以处理低位进位,并输出本位加法进位.多个一位全加器进行级联可以得到多位全加器. 第一步:一位全加器: 第二步:多位全加器,在其中例化一位全加器实现: 1 一位全加器 a和b为两位二进制数据,cin为前级进位位,cout为当前计算

移位寄存器的设计(VHDL)及testbench的编写

移位寄存器是一种常用的存储元件,此处由D触发器构成,如下图所示. 当时钟边沿到来时,存储在移位寄存器的数据朝一个方向移动一个BIT位. 移位寄存器的功能主要为:串并转换,并串转换和同步延迟. vhdl代码如下: 1 library ieee; 2 use ieee.std_logic_1164.all; 3 4 entity shiftreg_rb is --实体说明及端口说明 5 port( 6 si,clr_bar,clk:in std_logic; 7 qout:buffer std_lo

AC620教程 第十五节 8位7段数码管驱动设计与验证

本章导读 电子系统中常用的显示设备有数码管.LCD液晶以及VGA显示器等.其中数码管又可分为段式显示(7段.米字型等)以及点阵显示(8*8.16*16等),LCD液晶的应用可以分为字符式液晶(1602.12864等)以及真彩液晶屏,VGA显示器一般是现在的电脑显示器.芯航线开发板对以上三种设备均提供了硬件接口. 本章将实现FPGA驱动数码管动态显示并提取出实现的电路结构,从电路结构入手编写代码,仿真对设计进行验证.最终板级调试时使用In system sources and probes edi

10-8位7段数码管驱动实验——小梅哥FPGA设计思想与验证方法视频教程配套文档

芯航线--普利斯队长精心奉献 ? 实验目的: 1.实现FPGA驱动数码管动态显示: 2.使用In system sources and probes editor工具,输入需要显示在数码管上的的数据,数码管显示对应数值. 实验平台:芯航线FPGA核心板.数码管_VGA_PS2模块 实验原理: ????电子设计系统中常用的显示设备有数码管.LCD液晶以及VGA显示器等.其中数码管又可分为段式显示(7段.米字型等)以及点阵显示(8*8.16*16等),LCD液晶的应用可以分为字符式液晶(1602.1

数字逻辑与EDA设计

目录 第一章 数字逻辑基础 1.1数制与码制★★★ 数制 码制 1.2基本及常用的逻辑运算★★ 1.2逻辑函数表示方法★★ 1.3逻辑函数的化简★★★ 1.4常用74HC系列门电路芯片★ 第二章 组合逻辑电路 2.1组合逻辑电路的分析方法★★★ 2.2常用的组合逻辑电路(多考察各种器的输入输出端设计) 2.3组合逻辑电路的设计方法★★★ 2.4组合逻辑电路的时序分析★★★ 第三章 时序逻辑电路 3.1时序电路逻辑功能的表示方法★★ 3.2锁存器与触发器 3.3时序电路的分析方法★★★ 3.4常用

关于数据库‘状态’字段设计的思考与实践

最近在做订单及支付相关的系统,在订单表的设计阶段,团队成员就‘订单状态’数据库字段设计有了一些分歧,网上也有不少关于这方面的思考和探讨,结合这些资料和项目的实际情况,拟对一些共性问题进行更深一层的思考,笔耕在此,和大家一起探讨. 问题综述 这里的分歧点即有团队内部的分歧点,也有网络上常见的一些分歧点,先将存在的分歧点抛出来: 1.订单表的‘订单状态’字段对应的字典值应当包含哪些状态值?对于‘已评论’.‘已退货’.’已退款’这类状态是放到‘订单状态’中?还是独立一个字段标识? 2.订单表的‘订单状

固件空中升级(OTA)与固件二次引导的原理和设计

蓝牙固件空中升级(OTA)涉及到蓝牙无线通信.固件外存分布.固件内存分布(定制链接脚本).固件二次引导等技术,须要开发者深入理解蓝牙单芯片的存储架构.启动引导流程.外存设备驱动和产品电路设计等领域知识.完整和完美地设计和实现OTA,是一名嵌入式物联网软件project师最好的技术体现. 本文以Dialog公司研发的号称全球最低功耗蓝牙单芯片DA14580平台为基础进行分析和设计,但设计思想能够推广到其它蓝牙单芯片平台,甚至也适用于wifi固件空中升级. 一.OTA意义 固件空中升级是如此重要,在