移位寄存器的实现和应用

  • 0 74x194的介绍
  • 1 74x194的实现
    • 1.1 设计文件
    • 1.2 仿真文件
      • 1.2.1 仿真文件1
      • 1.2.2 仿真文件2
    • 1.3 仿真结果
      • 1.3.1 仿真结果对q赋初值
      • 1.3.2 未对q赋初值
  • 2 使用74x194IP核实现11001序列发生器
    • 2.1 分析
    • 2.2 设计文件
    • 2.3 仿真文件
    • 2.4 约束文件
    • 2.5 仿真结果

0 74x194的介绍

在数字电路中,移位寄存器(英语:shift register)是一种在若干相同时间脉冲下工作的以触发器为基础的器件,数据以并行或串行的方式输入到该器件中,然后每个时间脉冲依次向左或右移动一个比特,在输出端进行输出。这种移位寄存器是一维的,事实上还有多维的移位寄存器,即输入、输出的数据本身就是一些列位。实现这种多维移位寄存器的方法可以是将几个具有相同位数的移位寄存器并联起来。
参考文档74LS194\74HC194的功能表
74LS194计数器及其应用

一个D触发器可以实现一个一位的寄存器,两个触发器可以实现一个两位的寄存器,连接同一个时钟
移位寄存器如下图



1 74x194的实现

1.1 设计文件

module p_74x194(clk,clr_l,rin,lin,s,d,q );
input clk,clr_l,rin,lin;
input [1:0] s;
input [3:0] d;
output [3:0] q;
//reg [3:0] q=4'b0000;
reg [3:0] q=4'b0000;//注意对其赋初值,因为后面会用它
always @ (posedge clk or negedge clr_l)begin if (clr_l==0) q<=0;else case (s)0:q<=q; //保持1:q<={rin,q[3:1]}; //右移2:q<={q[2:0],lin}; //左移3:q<=d; //装载default q<=4'bx ;//不可能发生endcase
/*    else case (s)0:q<=q; //保持1:begin q[3]<=rin;q[2]<=q[3];q[1]<=q[2];q[0]<=q[1];end//右移2:begin q[3]<=q[2];q[2]<=q[1];q[1]<=q[0];q[0]<=lin;end//左移3:q<=d; //装载default q<=4'bx ; endcase*/
end
endmodule

1.2 仿真文件

1.2.1 仿真文件1

//教材P99页
module sim_p_74x194;
reg clk = 0;
reg clr_l = 1;
reg rin = 0;
reg lin = 1;
reg [1:0] s = 3;//装载3
reg [3:0] d = 4'b0101;
wire [3:0] q;
p_74x194 p_74x194_inst0(clk,clr_l,rin,lin,s,d,q);initial beginclk = 1'b0;#10clk = 1'b1;#10clk = 1'b0;s = 2'b10;//2左移#10clk = 1'b1;//第2个时钟上升沿,执行左移,左移后应q=4'b1011;#10clk = 1'b0;#10clk = 1'b1;//第3个时钟上升沿,执行左移,左移后应q=4'b0111;#10clk = 1'b0;#10clk = 1'b1;//第4个时钟上升沿,执行左移,左移后应q=4'b1111;#10clk = 1'b0;s = 2'b01;//右移endalways #10 clk = ~clk;
endmodule

1.2.2 仿真文件2

//自己编写的测试文件
module sim_p_74x194( );reg clk,clr_l,rin,lin;
reg [1:0] s;
reg [3:0] d;
wire [3:0] q;
p_74x194 p_74x194_inst0(.clk(clk),.clr_l(clr_l),.rin(rin),.lin(lin),.s(s),.d(d),.q(q) );always #10 clk = ~clk;initial beginclk = 1'b0;clr_l = 1'b1;rin = 1'b0;lin = 1'b1;s = 2'b11;d = 4'b0101;#30s = 2'b10;#60s = 2'b01;end
endmodule

1.3 仿真结果

1.3.1 仿真结果对q赋初值

reg [3:0] q=4’b0000;

将结果转换成二进制,便于观察

1.3.2 未对q赋初值


将结果转换成二进制,便于观察

2 使用74x194IP核实现11001序列发生器

2.1 分析



所有反馈逻辑是

74x194的连接

2.2 设计文件

1.先把IP核添加进来,点击Settings 在弹出的窗口中选 择点击左侧的IP图标点击库管理(Repository Manager)页框在库管理页框中点击“+”图标增加IP目录
2.选择设计好了的p_74x194工程目录,目录被加载进来,有一个IP
3.点击流程导航下工程项下的IP目录( IP Catalog),就可以看见刚刚添加的“p_74x194_0”IP核 。

4.双击p_74x194_0 弹出IP窗口。可以看到该IP核的逻辑符号如图所示。这个窗口可以用来编辑IP实例组件的名称。点击ok实例化IP,例化成功后

module seq_11001_3(input clk, output led);
wire lin;
reg[1:0] s=2'b10;//2左移
wire[3:0] q;
assign lin=~q[2]|~q[1];//反馈函数lin=q2'+q1'
assign led=lin;//可以将q[n]送到输出也是可实现11001序列
p_74x194_0 uut( //调用IP核 .clk(clk),.clr_l(1), //清零端无效.rin(0), //74x194 rin接地.lin(lin), //左移输入端等于q2'+q1'.s(s), //左移方式,s=2'b10.d(0), //数据输入端可以接任意值.q(q) //输出送q //需要对p_74x194.v中的q赋初值,因为后面会用);
endmodule

2.3 仿真文件

与4.1 时钟同步状态机的设计中的seq_11001_1仿真文件一样

module sim_seq_11001_3(    );reg clk;wire led;seq_11001_3 seq_11001_3_inst0( .clk(clk),.led(led));initial beginclk = 0;endalways #10 clk =~clk;
endmodule

2.4 约束文件

## clk
set_property PACKAGE_PIN D4 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk] ##led
set_property PACKAGE_PIN P9 [get_ports {led}]
set_property IOSTANDARD LVCMOS33 [get_ports {led}]

2.5 仿真结果

4.3 移位寄存器的实现和应用相关推荐

  1. 输入和输出移位寄存器的同步串行模式

    输入和输出移位寄存器的同步串行模式 输出口. 数据有RXD(P3.0)引脚输入或输出.同步移位脉冲由TXD(P3.1)引脚输出. 发送和接受均为8位数据.低位在前,高位在后. //串行口工作模式0 # ...

  2. 移位寄存器专题(verilog HDL设计)

    目录 移位寄存器简介 分类 4位右移位寄存器工作原理 1. 16位右移位寄存器 2. 16位左移寄存器 3. 串行输入并行输出寄存器 4. 并行输入串行输出移位寄存器 移位寄存器简介 移位寄存器内的数 ...

  3. 【 FPGA 】设计一个通用移位寄存器

    通用移位寄存器可以加载并行数据,将其内容向左移位(向高位移).向右移位(向低位移)或保持原有状态.它可以实现并转串(首先加载并行输入,然后移位)或串转并(首先移位,然后并行输出).实现这种操作需要两位 ...

  4. Verilog设计实例(6)基于Verilog的各种移位寄存器实现

    文章目录 写在前面 正文 左移位寄存器 右移位寄存器 串行输入并行输出移位寄存器 并行输入串行输出移位寄存器 参考资料 交个朋友 写在前面 个人微信公众号:FPGA LAB 个人博客首页 注:学习交流 ...

  5. FPGA基础知识极简教程(6)UART通信与移位寄存器的应用

    博文目录 写在前面 正文 关于UART的介绍 UART通信过程 UART.RS232以及TTL之间的关系 UART的使用场合 有关UART的总结 调试UART的技巧 UART的Verilog实现 波特 ...

  6. HDLBits 系列(21)LFSR(线性反馈移位寄存器)

    目录 5 bit LFSR 3 bit LFSR 32 bit LFSR 5 bit LFSR A linear feedback shift register is a shift register ...

  7. Xilinx FPGA中SRL(移位寄存器)资源

    SRL(移位寄存器)资源,在FPGA中都有,不过是叫不同的名字.Xilinx FPGA内部的LUT有个特殊功能,就是可以配置成可变长度SRL. 5输入的一个LUT可以变成32bit 的SRL 6输入的 ...

  8. FPGA实验五——多周期移位寄存器

    实验要求 • 编译下载电路观察现象 • 拨动SW0开关,观察LED的闪烁变换情况 • 设计新的功能 – 在原有的电路基础上,添加方向选择功能. – SW0仍然是移位寄存器组的输入 – 使用SW1开关, ...

  9. 保持寄存器和输入寄存器的区别_串行移位寄存器74HC595

    74HC595是8位串行移位寄存器,其中带有移位寄存器和存储寄存器,这两个寄存器分别采用不同的时钟控制.串行数据输入到内部8位移位寄存器然后再并行输出. 01 74HC595内部结构 如图所示为74H ...

  10. 序列密码体制(python随机数密码,RC4,线性反馈移位寄存器

    目录 概念: Vernam密码技术(序列密码的起源 伪随机数 线性反馈移位寄存器: 线性反馈移位寄存器LFSR 概念: 明文按一定长度分组后表示成一个序列,称为明文流.加密时,由种子密钥通过密钥流生产 ...

最新文章

  1. java 编码过滤器_Java编码过滤器
  2. 【LCT】洞穴勘测(luogu 2147/金牌导航 LCT-1)
  3. 程序猿值得看的几个技术网站(记录)
  4. C# 中的 is 和 as 运算符 简单举例说明
  5. 正则表达式,验证字符串由:中文、数字、英文、空格组成
  6. Maven 模块管理
  7. CyclicBarrier底层实现和原理
  8. 作为一个技术人,我究竟要什么?
  9. js中的onscroll的用法
  10. install mysql with source code
  11. Wannafly挑战赛11
  12. 八段数码管数字显示实验c语言,硬件实验十 八段数码管显示
  13. 计算机没有usb视频教程,Win7已安装但没有USB3.0驱动如何安装教程
  14. Dubbo Failed to check the status of the service.No provider available for the service from问题解决
  15. scala 中 foreach 的作用解释
  16. PC1 ping PC2 步骤
  17. 系统及软件迁移至移动硬盘
  18. 软件设计师:程序设计语言
  19. 中国非接触温度传感器市场现状研究分析与发展前景预测报告(2022)
  20. tf.invert_permutation

热门文章

  1. ai跟随路径_Illustrator描边路径 AI指定数量沿全路径混合小技巧 AI制版文字变粗...
  2. 淘宝开放平台API族
  3. KubeCon China 2021 阿里云专场来了!这些首日亮点不容错过
  4. egret新手引导反向遮罩
  5. 凯光dk4000说明书_《凯光dk4000烟弹》用户正在提问-魔笛moti行业门户网
  6. 关于Directx中shader的输入与输出
  7. 交换机千兆和百兆对网速影响_交换机千兆和百兆对网速影响_千兆/百兆/核心/PoE/光纤交换机选型指南...
  8. 终于搞清楚了ADO数据库连接中的Persist Security Info参数的作用
  9. 华盈IP PBX UC1910统一网关
  10. 百度搜索简单使用 以及 搜书网址