32位并进并出移位寄存器设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《EDA课程设计》

32位并进并出移位寄存器设计

学院:物理电气信息学院

专业:通信工程

姓名:杨小花

学号:12010245315

指导老师:杨泽林

完成日期:2012.12.11

32位并进并出移位寄存器设计

(杨小花12010245315 通信工程专业)

摘要:EDA技术作为现代电子设计技术的核心,它依赖强大的计算机,在EDA工具软件平台上,对以硬件描述语言VHDL为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、逻辑简化、逻辑分割、逻辑综合,以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。随着基于EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。关键字:EDA技术;VHDL语言;移位寄存器

一、实验原理

用一个8位移位寄存器,再增加一些电路,如4个8位锁存器等,设计成为一个能为32位二进制数进行不同方式移位的移位寄存器。8位是CPU设计中常用的移位寄存器模块,是用CASE语句设计的并行输入输出的移位寄存器模块。设计中有四种循环:带进位循环左移,带进位循环右移,自循环左移和自循环右移。其中带进位循环左移的原理是,每一次最高位移出进入输出进位,而最低位是设置的进位输入,带进位循环右移原理是,每一次最低位移出进入输出进位,而最高位是设置的进位输入,子循环左移的原理是,每一次循环,最高位进入到最低位,依次循环,自循环右移原理是,每一次最低位进入到最高位,依次循环。

二、实验步骤

1、建立一个工程项目,设置路径,项目名和顶层实体名一致;

2、设计一个8位移位寄存器电路;

3、设计一个8位锁存器电路;

4、运用元件调用声明语句和元件例化语句完成顶层设计。

三、实验程序

1、八位移位寄存器程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY SHIFTIS

PORT ( 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 SHIFT;

ARCHITECTURE behav OF SHIFT IS

SIGNAL REG : STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL CY : STD_LOGIC;

BEGIN

PROCESS(CLK,CO,MD)

BEGIN

IF CLK'EVENT AND CLK='1' THEN

CASE MD IS

WHEN "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;

程序所生成符号:

仿真结果:

图一:带进位左移循环仿真波形

图三:带进位右移循环仿真波形

图二:自循环左移仿真波形

图四:自循环右移仿真波形

仿真分析:

1.信号说明

CLK是输入时钟信号,其当上升沿到来时进行移位;CO为进位输入,当为带进位循环时,可自行设置其值1或0,当为自循环时,其值为0;D为待加载移位数据;MD为移位模式控制字,控制循环方式;CN为输出进位;QB为移位输出结果。

2.仿真说明

MD=101时加载数据,其值为输入的D值

(1)带进位左移循环:MD=001,CO可设置为1或0,循环过程中寄存器的最低位始终为输入的进位位,既REG(0)=CO,而最

高位都会移出进入CN,剩下的几位进行左移。

(2)带进位位左移循环:MD=101,CO可设置为1或0,其最高位始终为输入的进位,既REG(7)=CO,最低位都会移出进入

CN,剩下几位进行右移。

(3)自循环左移:MD=010,CO=0,循环过程中REG(0)=REG(7) (4)自循环右移:MD=110,CO=0,循环过程中REG(7)=REG(0) 2、锁存器程序

LIBRARY IEEE

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY REG8B IS

PORT(d:INSTD_LOGIC_VECTOR(7 DOWNTO 0);

q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);

CLK:IN STD_LOGIC);

END REG8B;

ARCHITECTURE behav OF REG8B IS

SIGNAL q1:STD_LOGIC_VECTOR(7 DOWNTO 0);

BEGIN

PROCESS(CLK,q1);

BEGIN

IF CLK'EVENT AND CLK='1' THEN

相关文档
最新文档