32位移位寄存器.docx
- 文档编号:28754433
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:9
- 大小:209.73KB
32位移位寄存器.docx
《32位移位寄存器.docx》由会员分享,可在线阅读,更多相关《32位移位寄存器.docx(9页珍藏版)》请在冰豆网上搜索。
32位移位寄存器
8位数码扫描显示电路设计
一、实验目的
学习硬件扫描显示电路的设计;
二、实验原理
动态数码扫描显示方式是利用了人眼的视觉暂留效应,把八个数码管按一定顺序进行点亮,当点亮的频率不大时,我们看到的是数码管一个个的点亮,然而,当点亮频率足够大时,我们看到的不再是一个一个的点亮,而是全部同时显示,与传统方式得到的视觉效果完全一样。
因此我们只要给数码管这样一个扫描频率,那么就可以实现两个以上的数码管同时点亮。
而这个频率我们可以通过一个计数器来产生,只要计数频率足够大,就可以实现我们的要求。
事实上,因为数码管点亮不是瞬间就可以的,它也需要一定的时间,该时间与数码管的选择有关系。
为了折中这一对矛盾,实验中一般可将计数频率选择在100Hz左右。
图示8位数码扫描显示电路,其中每个数码管的8个段:
h、g、f、e、d、c、b、a(h是小数点)都分别连在一起,8个数码管分别由8个选通信号k1、k2、…k8来选择。
被选通的数码管显示数据,其余关闭。
如在某一时刻,k3为高电平,其余选通信号为低电平,这时仅k3对应的数码管显示来自段信号端的数据,而其它7个数码管呈现关闭状态。
根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得8个选通信号k1、k2、…k8分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。
实验参考扫描显示程序中clk是扫描时钟;SG为7段控制信号,由高位至低位分别接g、f、e、d、c、b、a7个段;BT是位选控制信号,接图5-2中的8个选通信号:
k1、k2、…k8。
程序中CNT8是一个3位计数器,作扫描计数信号,由进程P2生成;进程P3是7段译码查表输出程序,进程P1是对8个数码管选通的扫描程序,例如当CNT8等于"001"时,K2对应的数码管被选通,同时,A被赋值3,再由进程P3译码输出"1001111",显示在数码管上即为“3”;当CNT8扫变时,将能在8个数码管上显示数据:
13579BDF。
原理图如图1所示。
图1八位数码管显示电路
三、实验步骤
1、建立一个工程项目,设置路径,项目名和顶层实体名一致;
2、、设计一个动态扫描显示电路,在8个数码管上显示数据:
13579BDF;并进行编译仿真与下载测试;
四、8位数码扫描显示电路的VHDL描述:
LIBRARYIEEE;
USESCAN_LEDIS
PORT(CLK:
INSTD_LOGIC;
SG:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);
BT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
END;
ARCHITECTUREoneOFSCAN_LEDIS
SIGNALCNT8:
STD_LOGIC_VECTOR(2DOWNTO0);
SIGNALA:
INTEGERRANGE0TO15;
BEGIN
P1:
PROCESS(CNT8)
BEGIN
CASECNT8IS
WHEN"000"=>BT<="00000001";A<=1;
WHEN"001"=>BT<="00000010";A<=2;
WHEN"010"=>BT<="00000100";A<=3;
WHEN"011"=>BT<="00001000";A<=4;
WHEN"100"=>BT<="00010000";A<=5;
WHEN"101"=>BT<="00100000";A<=6;
WHEN"110"=>BT<="01000000";A<=7;
WHEN"111"=>BT<="";A<=8;
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESSP1;
P2:
PROCESS(CLK)
BEGIN
IFCLK'EVENTANDCLK='1'THENCNT8<=CNT8+1;
ENDIF;
ENDPROCESSP2;
P3:
PROCESS(A)
BEGIN
CASEAIS
WHEN0=>SG<="0111111";WHEN1=>SG<="0000110";
WHEN2=>SG<="1011011";WHEN3=>SG<="1001111";
WHEN4=>SG<="1100110";WHEN5=>SG<="1101101";
WHEN6=>SG<="1111101";WHEN7=>SG<="0000111";
WHEN8=>SG<="1111111";WHEN9=>SG<="1101111";
WHEN10=>SG<="1110111";WHEN11=>SG<="1111100";
WHEN12=>SG<="0111001";WHEN13=>SG<="1011110";
WHEN14=>SG<="1111001";WHEN15=>SG<="1110001";
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESSP3;
END;
五、仿真波形
功能仿真波形
时序仿真波形
32位并进/并出移位寄存器设计
一、实验原理
用一个8位移位寄存器,再增加一些电路,如4个8位锁存器等,设计成为一个能为32位二进制数进行不同方式移位的移位寄存器。
二、实验步骤
1、建立一个工程项目,设置路径,项目名和顶层实体名一致;
2、设计一个8位移位寄存器电路;
3、设计一个8位锁存器电路;
4、运用元件调用声明语句和元件例化语句完成顶层设计。
三、实验程序
1、八位移位寄存器程序
LIBRARYIEEE;
USEjicunIS
PORT(CLK,CO:
INSTD_LOGIC;
MD:
INSTD_LOGIC_VECTOR(2DOWNTO0);
D:
INSTD_LOGIC_VECTOR(7DOWNTO0);
QB:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
CN:
OUTSTD_LOGIC);
ENDjicun;
ARCHITECTUREbehavOFjicunIS
SIGNALREG:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALCY:
STD_LOGIC;
BEGIN
PROCESS(CLK,CO,MD)
BEGIN
IFCLK'EVENTANDCLK='1'THEN
CASEMDIS
WHEN"001"=>REG(0)<=CO;
REG(7DOWNTO1)<=REG(6DOWNTO0);CY<=REG(7);
WHEN"010"=>REG(0)<=REG(7);---自循环左移
REG(7DOWNTO1)<=REG(6DOWNTO0);
WHEN"011"=>REG(7)<=REG(0);---自循环右移
REG(6DOWNTO0)<=REG(7DOWNTO1);
WHEN"100"=>REG(7)<=CO;---带进位循环右移
REG(6DOWNTO0)<=REG(7DOWNTO1);CY<=REG(0);
WHEN"101"=>REG(7DOWNTO0)<=D(7DOWNTO0);--加载待移数
WHENOTHERS=>REG<=REG;CY<=CY;--保持
ENDCASE;
ENDIF;
ENDPROCESS;
QB(7DOWNTO0)<=REG(7DOWNTO0);CN<=CY;
ENDbehav;
2、锁存器程序
libraryieee;
use;
entitysuocunis
port(d:
instd_logic_vector(7downto0);
q:
outstd_logic_vector(7downto0);
clk:
instd_logic);
endsuocun;
architectureoneofsuocunis
signalq1:
std_logic_vector(7downto0);
begin
process(clk,q1)
begin
ifclk'eventandclk='1'
then
q1<=d;
endif;
endprocess;
q<=q1;
endone;
3、顶层设计程序
LIBRARYIEEE;
USEjicun32IS
PORT(clk0,co:
INSTD_LOGIC;
md:
INSTD_LOGIC_VECTOR(2DOWNTO0);
db:
INSTD_LOGIC_VECTOR(31DOWNTO0);
qb:
OUTSTD_LOGIC_VECTOR(31DOWNTO0);
cn:
OUTSTD_LOGIC);
ENDjicun32;
ARCHITECTUREoneOFjicun32IS
COMPONENTjicun
PORT(CLK,CO:
INSTD_LOGIC;
MD:
INSTD_LOGIC_VECTOR(2DOWNTO0);
D:
INSTD_LOGIC_VECTOR(7DOWNTO0);
QB:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
CN:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTsuocun
port(d:
instd_logic_vector(7downto0);
q:
outstd_logic_vector(7downto0);
clk:
instd_logic);
ENDCOMPONENT;
SIGNALe,f,g,h:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALl,m,n:
STD_LOGIC;
BEGIN
u1:
suocunPORTMAP(d=>db(7DOWNTO0),q=>e,clk=>clk0);
u2:
jicunPORTMAP(D=>e,QB=>qb(7DOWNTO0),CLK=>clk0,CO=>co,CN=>l,MD=>md);
u3:
suocunPORTMAP(d=>db(15DOWNTO8),q=>f,clk=>clk0);
u4:
jicunPORTMAP(D=>f,QB=>qb(15DOWNTO8),CLK=>clk0,CO=>l,CN=>m,MD=>md);
u5:
suocunPORTMAP(d=>db(23DOWNTO16),q=>g,clk=>clk0);
u6:
jicunPORTMAP(D=>g,QB=>qb(23DOWNTO16),CLK=>clk0,CO=>m,CN=>n,MD=>md);
u7:
suocunPORTMAP(d=>db(31DOWNTO24),q=>h,clk=>clk0);
u8:
jicunPORTMAP(D=>h,QB=>qb(31DOWNTO24),CLK=>clk0,CO=>n,CN=>cn,MD=>md);
ENDARCHITECTUREone;
四、仿真结果
1、锁存器仿真
2、八位寄存器仿真
3、顶层设计仿真
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 32 移位寄存器