最新32位移位寄存器
32位移位寄存器

实验四一、实验名称32位并进/并出移位寄存器设计二、实验原理用一个8位移位寄存器,再增加一些电路,如4个8位锁存器等,设计成为一个能为32位二进制数进行不同方式移位的移位寄存器。
三、实验步骤1、建立一个工程项目,设置路径,项目名和顶层实体名一致;2、设计一个8位移位寄存器电路;3、设计一个8位锁存器电路;4、运用元件调用声明语句和元件例化语句完成顶层设计。
四、实验程序1、八位移位寄存器程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY jicun ISPORT ( CLK,CO: IN STD_LOGIC; --时钟和进位输入MD : IN STD_LOGIC_VECTOR(2 DOWNTO 0); --移位模式控制字 D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- 待加载移位的数据 QB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --移位数据输出CN : OUT STD_LOGIC); --- 进位输出END jicun;ARCHITECTURE behav OF jicun ISSIGNAL REG : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL CY : STD_LOGIC;BEGINPROCESS(CLK,CO,MD)BEGINIF CLK'EVENT AND CLK='1' THENCASE MD ISWHEN "001"=> REG(0)<=CO; ---带进位循环左移REG(7 DOWNTO 1)<= REG(6 DOWNTO 0);CY<=REG(7);WHEN "010" => REG(0)<=REG(7); ---自循环左移REG(7 DOWNTO 1)<= REG(6 DOWNTO 0);WHEN "011"=>REG(7)<=REG(0); ---自循环右移REG(6 DOWNTO 0)<=REG(7 DOWNTO 1);WHEN "100" =>REG(7)<=CO; ---带进位循环右移REG(6 DOWNTO 0)<=REG(7 DOWNTO 1);CY<=REG(0);WHEN "101" =>REG(7 DOWNTO 0)<=D(7 DOWNTO 0); --加载待移数 WHEN OTHERS=>REG<=REG;CY<=CY;--保持END CASE;END IF;END PROCESS;QB(7 DOWNTO 0)<=REG(7 DOWNTO 0);CN<=CY;END behav;2、锁存器程序library ieee ;use ieee.std_logic_1164.all ;entity suocun isport(d : in std_logic_vector(7 downto 0) ;q: out std_logic_vector(7 downto 0);clk : in std_logic );end suocun ;architecture one of suocun issignal q1: std_logic_vector(7 downto 0);beginprocess(clk,q1)beginif clk'event and clk='1'thenq1<=d;end if;end process;q<=q1;end one;3、顶层设计程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY jicun32 ISPORT ( clk0,co: IN STD_LOGIC; --时钟和进位输入md : IN STD_LOGIC_VECTOR(2 DOWNTO 0); --移位模式控制字db : IN STD_LOGIC_VECTOR(31 DOWNTO 0); -- 待加载移位的数据qb : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); --移位数据输出 cn : OUT STD_LOGIC); --- 进位输出END jicun32;ARCHITECTURE one OF jicun32 ISCOMPONENT jicunPORT ( CLK,CO: IN STD_LOGIC;MD : IN STD_LOGIC_VECTOR(2 DOWNTO 0);D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);QB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);CN : OUT STD_LOGIC);END COMPONENT;COMPONENT suocunport(d : in std_logic_vector(7 downto 0) ;q: out std_logic_vector(7 downto 0);clk : in std_logic );END COMPONENT;SIGNAL e,f,g,h : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL l,m,n : STD_LOGIC;BEGINu1: suocun PORT MAP(d=>db(7 DOWNTO 0),q=>e,clk=>clk0);u2: jicun PORT MAP (D=>e,QB=>qb(7 DOWNTO 0),CLK=>clk0,CO=>co,CN=>l,MD=>md);u3: suocun PORT MAP(d=>db(15 DOWNTO 8),q=>f,clk=>clk0); u4: jicun PORT MAP(D=>f,QB=>qb(15 DOWNTO 8),CLK=>clk0,CO=>l,CN=>m,MD=>md);u5: suocun PORT MAP(d=>db(23 DOWNTO 16),q=>g,clk=>clk0); u6: jicun PORT MAP(D=>g,QB=>qb(23 DOWNTO 16),CLK=>clk0,CO=>m,CN=>n,MD=>md);u7: suocun PORT MAP(d=>db(31 DOWNTO 24),q=>h,clk=>clk0); u8: jicun PORT MAP(D=>h,QB=>qb(31 DOWNTO 24),CLK=>clk0,CO=>n,CN=>cn,MD=>md);END ARCHITECTURE one;五、仿真结果1、锁存器仿真2、八位寄存器仿真3、顶层设计仿真4、32位并进并出移位寄存器RTL图。
移位寄存器工作原理

移位寄存器工作原理
移位寄存器是一种在数字电路中常用的重要元件,它可以将二进制数据按照一定的规律进行移位操作。
其工作原理如下:
1. 移位寄存器由多个触发器组成,常见的有D触发器、JK触
发器等。
每个触发器都可以存储一个二进制位。
2. 顺序移位寄存器中,触发器按照一定的顺序连接起来,每个触发器的输出接到下一个触发器的输入。
3. 并行移位寄存器中,所有的触发器的时钟信号都是相同的,即它们同时进行状态的更新。
4. 当时钟信号到达时,触发器按照一定的规则将输入数据传递给下一个触发器,并将上一个触发器的输出传递给自己的输出。
5. 移位操作可以是向左移位或向右移位,这取决于触发器的连接方式。
向左移位表示数据向高位移动,而向右移位表示数据向低位移动。
6. 移位寄存器还可以通过加载操作将特定的数据加载到触发器中,实现对寄存器的初始化或重置。
7. 移位寄存器常用于数据传输、数据序列生成、数字信号处理等领域,可以实现数据的移位、平移、循环移位等功能。
总之,移位寄存器的工作原理是利用触发器的连接方式和时钟
信号的控制,实现对二进制数据的移位操作。
它在数字电路中有着广泛的应用,是实现许多逻辑和运算功能的重要组成部分。
第5讲:大气数据计算机

自整角机同步信号/数字转换
电阻/数字转换
S/H
A/D
输入信号的传输
2020年4月18日6时1分
第15/共45
数字式大气数据计算机-----输入 接口(一)
2020年4月18日6时1分
二进制译码器
A B C D S0 S1
逻辑多路转 换器
第16/共45
数字式大气数据计算机-----输入接 口(二)
Ts
!0.2M
2 a
由于
a2 kRT
且
Ma
V a
考虑到总温探头误差
2020年4月18日6时1分
第5/共45
大气数据计算机
组成
传感器测量
静压传感器、全压传感器、总温传感器、 攻角传感器等
具有可进行误差修正和补偿的解算装置 座舱指示、显示装置及信号输出装置
2020年4月18日6时1分
第6/共45
2020年4月18日6时1分
第13/共45
全温探头
2020年4月18日6时1分
第14/共45
数字式大气数据计算机-----输入 接口
多路转换器
直流电压/数字转换
V-T式A/D转换
多 路
双积分式A/D转换
转 换
逐次逼近式A/D转换
器
交/直流转换原理
频率/数字转换原理
频率测量原理
周期测量原理
VDC1 sin VDC2 cos
自整角机
信号转换 方框图
将三相同步信号变换成传送角的正弦、余弦两相交流信号, 然后再变成直流信号,再通过A/D转换成相应的数字量。
2020年4月18日6时1分
第24/共45
角度信号的反变换
sinα cosα
01第1章 大气数据计算机系统

第37/共45
数字式大气数据计算机-----输出 接口(三)
数字量 cosθ 数字/交流转换 数字/交流转换 接 收 机
cos(θ+120°) cos(θ+240°)
数字/交流转换
(a)
数字—自整角机转换
2019年3月29日3时57分
第38/共45
利用SCOTT变压器实现数字/自整 角机变换
sinθ
S1
S2 S3 W1
3 W1 2
c
W2 W2
R1
R3 R4 R2
(a)
SCOTT变压器由两个变压器组成,一个M变压器, 其原边线组带有中间抽头,匝数为W1,一个叫T变 压器,其原边绕组匝数为 23 W 。两个变压器副边绕 组匝数相同,都为W2
1
2019年3月29日3时57分
第28/共45
SCOTT 变压器(二)
信号比 较器
数字量 输出
开测 启动
标准脉冲 零比 较器 开(上 发生器 升沿)
V/T式A/D转换
2019年3月29日3时57分 第20/共45
数字式大气数据计算机-----输入 接口(四)
±UX -UR +UR 逻辑 控制
积分器
零比 较器
Uc U’x
时钟
译码 显示
U’c Uc
计数门
计数器
Ux
T1 T2 T’2
多 路 转 换 器
S/H
A/D
输入信号的传输
2019年3月29日3时57分
第17/共45
数字式大气数据计算机-----输入 接口(一)
二进制译码器
A B C D S0 S1
逻辑多路转 换器
STM32串口寄存器

当RXNE仍然是’1’的时候,当前被接收在移位寄存器中的数据,需要传送至RDR寄存器时,硬 件将该位置位。如果USART_CR1中的RXNEIE为’1’的话,则产生中断。由软件序列将其清零 (先读USART_SR,然后读USART_CR)。
0:没有过载错误;
1:检测到过载错误。
注意:该位被置位时,RDR寄存器中的值不会丢失,但是移位寄存器中的数据会被覆盖。如果 设置了EIE位,在多缓冲器通信模式下,ORE标志置位会产生中断的。
TXEIE:发送缓冲区空中断使能 (TXE interrupt enable) 该位由软件设置或清除。 0:禁止产生中断; 1:当USART_SR中的TXE为’1’时,产生USART中断。
TCIE:发送完成中断使能 (Transmission complete interrupt enable) 该位由软件设置或清除。 0:禁止产生中断; 1:当USART_SR中的TC为’1’时,产生USART中断。
位2
NE: 噪声错误标志 (Noise error flag)
在接收到的帧检测到噪音时,由硬件对该位置位。由软件序列对其清玲(先读USART_SR,再 读USART_DR)。
0:没有检测到噪声;
1:检测到噪声。
注意:该位不会产生中断,因为它和RXNE一起出现,硬件会在设置RXNE标志时产生中断。 在多缓冲区通信模式下,如果设置了EIE位,则设置NE标志时会产生中断。
位12
位11
12 11 10 M WAKE PCE rw rw rw
9
8
7
6
5
4
3
PS
PEIE TXEIE TCIE
RXNE IE
IDLE IE
TE
移位寄存器芯片74HC595实现LED动、静态显示的基本原理

移位寄存器芯片74HC595实现LED动、静态显示的基本原理摘要:本文介绍了应用移位寄存器芯片74HC595实现LED动、静态显示的基本原理。
提出了一种用74HC595实现多位LED显示的新方法。
同时对该系统的硬件组成和软件实现作了详细说明。
实际应用表明,此方法连线简单方便,成本低廉,可用于24位LED或更多位LED显示。
关键词:LED 74HC595 动态显示静态显示1 引言单片机应用系统中使用的显示器主要有LED和LCD两种。
近年来也有用CRT显示的。
前者价格低廉,配置灵活,与单片机接口方便;后者可进行图形显示,但接口较复杂,成本也较高。
LED(Ling Emiting Diode)是发光二极管的缩写。
实际应用非常普遍的是八段LED显示器。
LED显示器在大型报时屏幕,银行利率显示,城市霓虹灯建设中,得到广泛应用。
在这些需要多位LED显示的场合,怎样实现系统稳定,价格低廉的显示,成为决定其成本的关键所在。
2 74HC595实现LED静、动态显示基本原理74HC595是美国国家半导体公司生产的通用移位寄存器芯片。
并行输出端具有输出锁存功能。
与单片机连接简单方便,只须三个I/O口即可。
而且通过芯片的Q7引脚和SER引脚,可以级联。
而且价格低廉,每片单价为1.5元左右.2.1 静态显示每位LED显示器段选线和74HC595的并行输出端相连,每一位可以独立显示(见图1)。
在同一时间里,每一位显示的字符可以各不相同(每一位由一个74HC595的并行输出口控制段选码)。
N位LED显示要求N个74HC595芯片及N+3条I/O口线,占用资源较多,而且成本较高。
这对于多位LED显示很不利。
2.2 动态显示在多位LED显示时,为了简化电路,降低成本,节省系统资源,将所有的N位段选码并联在一起,由一片74HC595控制(见图2)。
由于所有LED的段选码皆由一个74HC595并行输出口控制,因此,在每一瞬间,N位LED会显示相同的字符。
单片机移位寄存器

单片机移位寄存器单片机移位寄存器单片机中的移位寄存器是一种特殊的寄存器,它可以对数据进行移位操作。
在单片机中,移位寄存器通常用于串行通信、数字信号处理和数据转换等应用场合。
由于单片机中的移位寄存器只能处理二进制数据,因此在进行移位操作时需要将十进制数转换为二进制数。
例如,将十进制数5转换为二进制数为101。
在单片机中,有两种类型的移位寄存器:左移寄存器和右移寄存器。
左移寄存器可以将数据向左移动一定的位数,而右移寄存器则可以将数据向右移动一定的位数。
在进行左移操作时,最高位被丢弃,并在最低位补上0。
例如,在一个8位的左移寄存器中,如果向左移动3个位置,则最高3个位置上的数据被丢弃,并在最低3个位置上补0。
在进行右移操作时,则是将最低位被丢弃,并在最高位补上0或1。
例如,在一个8位的右移寄存器中,如果向右移动3个位置,则最低3个位置上的数据被丢弃,并根据需要在最高3个位置上补0或1。
除了基本的左、右移操作外,单片机中的移位寄存器还可以进行逻辑移位、算术移位和循环移位等操作。
逻辑移位是指在进行移位操作时,只对数据的位置进行改变,并不改变数据本身。
例如,在一个8位的左移寄存器中,将数据向左移动3个位置,则最高3个位置上的数据被丢弃,并在最低3个位置上补0,但是数据本身并没有发生变化。
算术移位则是在进行移位操作时,根据数据的符号进行相应的处理。
例如,在一个8位的右移寄存器中,如果向右移动3个位置,则最低3个位置上的数据被丢弃,并根据需要在最高3个位置上补0或1。
如果原始数据是有符号数,则需要将符号扩展到高位。
循环移位则是指在进行移位操作时,将被丢弃的数据重新放到另一端。
例如,在一个8位的左循环移位寄存器中,将数据向左循环移动3个位置,则最高3个位置上的数据被丢弃,并重新放到最低3个位置上。
总之,单片机中的移位寄存器具有广泛的应用场合和功能。
熟练掌握它们的使用方法和技巧可以提高单片机程序设计效率和优化程序性能。
32位移双向位寄存器的设计(DOC)

EDA课程设计报告题目:32位移位寄存器设计专业班级:电气工程及其自动化101 姓名:完成日期:2012年12月 30 日设计要求双向移位寄存器设计要求:完成以下功能特性的双向32 位移位寄存器。
同时要求有使能端,用1602 显示。
32位移位寄存器设计摘要:移位寄存器是基本的同步时序电路,基本的移位寄存器可以实现数据的串行/并行或并行/串行的转换、数值运算以及其他数据处理功能。
在本设计中使用硬件描述语言Verilog,在EDA 工具QuartussII中,设计32位双向移位寄存器硬件电路,根据设计语言进行功能时序仿真,验证设计的正确性与可行性。
关键词:Verilog QuartusII 移位寄存器1 引言随着社会的发展,科学技术也在不断的进步。
特别是计算机产业,可以说是日新月异,移位寄存器作为计算机的一个重要部件,从先前的只能做简单的左移或右移功能的寄存器到现在广泛应用的具有寄存代码、实现数据的串行-并行转换、数据运算和数据处理功能的移位寄存器。
移位寄存器正在向着功能强,体积小,重量轻等方向不断发展,本设计主要介绍的是一个基于超高速硬件描述语言Verilog对移位寄存器进行编程实现。
现在各种装饰用的流水灯、广告彩灯、宣传画越来越多的出现在人民的生活当中,这些装饰控制设备多数要用移位寄存器来实现。
在计算机中常要求寄存器有移位功能。
如在进行乘法时,要求将部分积右移;在将并行传送的数转换成串行数时也需要移位。
因此,移位寄存器的设计是必要的。
2 总体设计方案移位寄存器的功能即是对每一个上升沿到来时,并且寄存器使能是时,对输入按照移位模式控制信号的要求实现输出的左移和右移。
首先,要完成双向的32位移位寄存器,就首先必须要实现8位移位寄存器作为基础。
其次,在4个8个移位寄存器的基础上达到32位移位寄存器的功能。
第一要有模式控制输入,来控制移位寄存器的移位方向;第二,有使能端,即在什么情况下移位寄存器才可以正常工作,才可以实现模式控制,什么时候置数,什么时候移位,是左移还是右移,这就要求使能是模式控制输入的前提;然后是脉冲控制信号,由要求可知,移位寄存器是在上升沿触发的,即在每一次上升沿到来时,移位寄存器使输入按照模式控制的要求向左或向右移一位;最后输入和输出,都要用到32位并行输入和输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8位数码扫描显示电路设计12一、实验目的3学习硬件扫描显示电路的设计;二、实验原理45动态数码扫描显示方式是利用了人眼的视觉暂留效应,把八个数码管6按一定顺序进行点亮,当点亮的频率不大时,我们看到的是数码管一个7个的点亮,然而,当点亮频率足够大时,我们看到的不再是一个一个的8点亮,而是全部同时显示,与传统方式得到的视觉效果完全一样。
因此9我们只要给数码管这样一个扫描频率,那么就可以实现两个以上的数码管同时点亮。
而这个频率我们可以通过一个计数器来产生,只要计数频1011率足够大,就可以实现我们的要求。
事实上,因为数码管点亮不是瞬间12就可以的,它也需要一定的时间,该时间与数码管的选择有关系。
为了折中这一对矛盾,实验中一般可将计数频率选择在100Hz左右。
1314图示8位数码扫描显示电路,其中每个数码管的8 个段:h、g、f、e、15d、c、b、a(h 是小数点)都分别连在一起,8 个数码管分别由8 个选16通信号k1、k2、… k8 来选择。
被选通的数码管显示数据,其余关闭。
17如在某一时刻,k3 为高电平,其余选通信号为低电平,这时仅k3 对应18的数码管显示来自段信号端的数据,而其它7 个数码管呈现关闭状态。
根据这种电路状况,如果希望在8 个数码管显示希望的数据,就必须使1920得8 个选通信号k1、k2、… k8 分别被单独选通,并在此同时,在段信21号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。
2223实验参考扫描显示程序中clk 是扫描时钟;SG 为7 段控制信号,由高位至低位分别接g、f、e、d、c、b、a 7个段;BT 是位选控制信号,接2425图5-2 中的8 个选通信号:k1、k2、… k8 。
程序中CNT8 是一个3 位计26数器,作扫描计数信号,由进程P2 生成;进程P3 是7 段译码查表输出程序,进程P1 是对8 个数码管选通的扫描程序,例如当CNT8 等于"001"2728时,K2 对应的数码管被选通,同时,A 被赋值3,再由进程P3 译码输出29"1001111",显示在数码管上即为“3”;当CNT8 扫变时,将能在8 个30数码管上显示数据:13579BDF 。
原理图如图1所示。
3132图1 八位数码管显示电路三、实验步骤33341、建立一个工程项目,设置路径,项目名和顶层实体名一致;352、、设计一个动态扫描显示电路,在8 个数码管上显示数据:13579BDF;36并进行编译仿真与下载测试;37四、8位数码扫描显示电路的VHDL描述:38LIBRARY IEEE;39USE IEEE.STD_LOGIC_1164.ALL;40USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SCAN_LED IS4142PORT ( CLK : IN STD_LOGIC;43SG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);44BT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );45END;46ARCHITECTURE one OF SCAN_LED ISSIGNAL CNT8 : STD_LOGIC_VECTOR(2 DOWNTO 0);4748SIGNAL A : INTEGER RANGE 0 TO 15;49BEGIN50P1:PROCESS( CNT8 )51BEGIN52CASE CNT8 ISWHEN "000" => BT <= "00000001" ; A <= 1 ;5354WHEN "001" => BT <= "00000010" ; A <= 2 ;55WHEN "010" => BT <= "00000100" ; A <= 3 ;WHEN "011" => BT <= "00001000" ; A <= 4 ;5657WHEN "100" => BT <= "00010000" ; A <= 5 ;58WHEN "101" => BT <= "00100000" ; A <= 6 ;59WHEN "110" => BT <= "01000000" ; A <= 7 ;60WHEN "111" => BT <= "10000000" ; A <= 8 ;61WHEN OTHERS => NULL ;END CASE ;6263END PROCESS P1;64P2:PROCESS(CLK)65BEGIN66IF CLK'EVENT AND CLK = '1' THEN CNT8 <= CNT8 + 1;67END IF;END PROCESS P2 ;6869P3:PROCESS( A )70BEGINCASE A IS7172WHEN 0 => SG <= "0111111"; WHEN 1 => SG <= "0000110"; 73WHEN 2 => SG <= "1011011"; WHEN 3 => SG <= "1001111"; 74WHEN 4 => SG <= "1100110"; WHEN 5 => SG <= "1101101"; 75WHEN 6 => SG <= "1111101"; WHEN 7 => SG <= "0000111"; 76WHEN 8 => SG <= "1111111"; WHEN 9 => SG <= "1101111";WHEN 10 => SG <= "1110111"; WHEN 11 => SG <= "1111100";7778WHEN 12 => SG <= "0111001"; WHEN 13 => SG <= "1011110";79WHEN 14 => SG <= "1111001"; WHEN 15 => SG <= "1110001";80WHEN OTHERS => NULL ;81END CASE ;82END PROCESS P3;END;8384五、仿真波形85功能仿真波形8687时序仿真波形88899091929394959697989910010110210310410532位并进/并出移位寄存器设计106一、实验原理107用一个8位移位寄存器,再增加一些电路,如4个8位锁存器等,设108计成为一个能为32位二进制数进行不同方式移位的移位寄存器。
109二、实验步骤1101、建立一个工程项目,设置路径,项目名和顶层实体名一致;1112、设计一个8位移位寄存器电路;3、设计一个8位锁存器电路;1121134、运用元件调用声明语句和元件例化语句完成顶层设计。
三、实验程序1141151、八位移位寄存器程序116LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;117118ENTITY jicun IS119PORT ( CLK,CO: IN STD_LOGIC;120MD : IN STD_LOGIC_VECTOR(2 DOWNTO 0);121D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);122QB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);123CN : OUT STD_LOGIC);124END jicun;125ARCHITECTURE behav OF jicun IS126SIGNAL REG : STD_LOGIC_VECTOR(7 DOWNTO 0);127SIGNAL CY : STD_LOGIC;128BEGIN129PROCESS(CLK,CO,MD)130BEGIN131IF CLK'EVENT AND CLK='1' THEN132CASE MD IS133WHEN "001"=> REG(0)<=CO;134REG(7 DOWNTO 1)<= REG(6 DOWNTO 0);CY<=REG(7);WHEN "010" => REG(0)<=REG(7); ---自循环左移135136REG(7 DOWNTO 1)<= REG(6 DOWNTO 0);137WHEN "011"=>REG(7)<=REG(0); ---自循环右移138REG(6 DOWNTO 0)<=REG(7 DOWNTO 1);139WHEN "100" =>REG(7)<=CO; ---带进位循环右移140REG(6 DOWNTO 0)<=REG(7 DOWNTO 1);CY<=REG(0); 141WHEN "101" =>REG(7 DOWNTO 0)<=D(7 DOWNTO 0); --加载142待移数143WHEN OTHERS=>REG<=REG;CY<=CY;--保持144END CASE;145END IF;146END PROCESS;147QB(7 DOWNTO 0)<=REG(7 DOWNTO 0);CN<=CY;148END behav;1492、锁存器程序150library ieee ;151use ieee.std_logic_1164.all ;152entity suocun isport(d : in std_logic_vector(7 downto 0) ; 153154q: out std_logic_vector(7 downto 0); 155clk : in std_logic );156end suocun ;157architecture one of suocun is158signal q1: std_logic_vector(7 downto 0); 159begin160process(clk,q1)161begin162if clk'event and clk='1'163then164q1<=d;165end if;166end process;167q<=q1;168end one;1693、顶层设计程序170LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;171172ENTITY jicun32 IS173PORT ( clk0,co: IN STD_LOGIC;174md : IN STD_LOGIC_VECTOR(2 DOWNTO 0);175db : IN STD_LOGIC_VECTOR(31 DOWNTO 0);176qb : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); 177cn : OUT STD_LOGIC);178END jicun32;179ARCHITECTURE one OF jicun32 IS180COMPONENT jicun181PORT ( CLK,CO: IN STD_LOGIC;182MD : IN STD_LOGIC_VECTOR(2 DOWNTO 0);183D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);184QB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); 185CN : OUT STD_LOGIC);186END COMPONENT;187COMPONENT suocun188port(d : in std_logic_vector(7 downto 0) ;189q: out std_logic_vector(7 downto 0);190clk : in std_logic );191END COMPONENT;192SIGNAL e,f,g,h : STD_LOGIC_VECTOR(7 DOWNTO 0);193SIGNAL l,m,n : STD_LOGIC;194BEGIN195u1: suocun PORT MAP(d=>db(7 DOWNTO 0),q=>e,clk=>clk0); 196u2: jicun PORT MAP (D=>e,QB=>qb(7 DOWNTO 0),197CLK=>clk0,CO=>co,CN=>l,MD=>md);198u3: suocun PORT MAP(d=>db(15 DOWNTO 8),q=>f,clk=>clk0);u4: jicun PORT MAP(D=>f,QB=>qb(15 DOWNTO 8),199200CLK=>clk0,CO=>l,CN=>m,MD=>md);201u5: suocun PORT MAP(d=>db(23 DOWNTO 16),q=>g,clk=>clk0);u6: jicun PORT MAP(D=>g,QB=>qb(23 DOWNTO 16),202203CLK=>clk0,CO=>m,CN=>n,MD=>md);204u7: suocun PORT MAP(d=>db(31 DOWNTO 24),q=>h,clk=>clk0); 205u8: jicun PORT MAP(D=>h,QB=>qb(31 DOWNTO 24),206CLK=>clk0,CO=>n,CN=>cn,MD=>md);207END ARCHITECTURE one;四、仿真结果2082091、锁存器仿真2102112、八位寄存器仿真2122133、顶层设计仿真214 215 216 217。