VHDL通用位移寄存器的实验


通用移位寄存器的设计

 

  • 实验目的:

学习时序逻辑电路,学习寄存器的原理,学习VHDL语言。

  • 实验内容:

编写一个8位的模式可控的移位寄存器的VHDL 代码并编译,仿真。

  • 实验环境

PC 机(Pentium100 以上)、Altera Quartus II 6.0 CPLD/FPGA 集成开发环境。

  • 实验原理

本实验就是设计一个模式可控的移位寄存器,该寄存器可以对8位信号通过MD输入端控制移位输出的模式,其功能表如表7-1所示。

 模式可控移位寄存器功能表

CLK

MD

状态

001

带进位循环左移

010

带进位循环右移

011

自循环左移

100

自循环右移

101

加载待移数据

其他

保持

   

               


实验步骤:

1.使用工程向导新建一个工程

2.设置工程路径和工程名字

3.选择器件类型:

4.新建一个VHDL文件:

5.代码如下:

library ieee;
use ieee.std_logic_1164.all;
entity SHIFT is
port(
	CLK,C0 :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 entity SHIFT;
architecture BHV of SHIFT is
	signal REG : std_logic_vector(7 downto 0);
	signal CY  : std_logic;
begin
	process(CLK,MD,C0)
	begin
		if CLK'EVENT AND CLK='1' then
			case MD is
		when "001" =>REG(0)<=C0;
		REG(7 downto 1)<=REG(6 downto 0); CY<=REG(7);
		when "010" =>REG(7)<=C0;
		REG(6 downto 0)<=REG(7 downto 1); CY<=REG(7);
		when "011" =>REG(0)<=REG(7);
		REG(7 downto 1)<=REG(6 downto 0); CY<=REG(7);
		when "100" =>REG(7)<=REG(0);
		REG(6 downto 0)<=REG(7 downto 1); CY<=REG(7);
		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 BHV;

6.保存程序

7.新建仿真文件

8.添加数据节点,然后设置时钟等参数保存仿真文件

9.波形仿真

1.先使MD为101加载待移数据,然后时MD为001带进位左移:

2.先使MD为101加载待移数据,然后时MD为010带进位右移:

3.先使MD为101加载待移数据,然后时MD为011自循环左移:

3.先使MD为101加载待移数据,然后时MD为100自循环左移:


                                                     

发布了91 篇原创文章 · 获赞 247 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/qq_36243942/article/details/83545581