--实验6.4

--8位移位寄存器

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY shifter IS

PORT (

data_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); --输入的数据

n : IN STD_LOGIC_VECTOR(2 DOWNTO 0); --移位的数量

dir : IN STD_LOGIC; --移动的方向 0:左 1:右

kind : IN STD_LOGIC_VECTOR(1 DOWNTO 0); --移动类型 00:算术移 01:逻辑移 10:循环移

clock : IN BIT; --手动时钟PULSE

data_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) --移位的结果

);

END shifter;

ARCHITECTURE behav of shifter IS

BEGIN

PROCESS (data_in, n, dir, kind)

VARIABLEx,y : STD_LOGIC_VECTOR(7 DOWNTO 0);

VARIABLEctrl0,ctrl1,ctrl2 : STD_LOGIC_VECTOR (3 DOWNTO 0);

BEGIN

IF (clock'EVENT AND clock = '1')THEN

--产生控制向量ctrl

ctrl0 := n(0) & dir & kind(1) & kind(0);

ctrl1 := n(1) & dir & kind(1) & kind(0);

ctrl2 := n(2) & dir & kind(1) & kind(0);

CASE ctrl0 IS

WHEN "0000" | "0001" | "0010" | "0100" | "0101" | "0110" =&gt x := data_in; --n=0时不移动

WHEN "1000" =&gt x := data_in(6 DOWNTO 0) & data_in(0); --算术左移1位

WHEN "1001" =&gt x := data_in(6 DOWNTO 0) & '0'; --逻辑左移1位

WHEN "1010" =&gt x := data_in(6 DOWNTO 0) & data_in(7); --循环左移1位

WHEN "1100" =&gt x := data_in(7) & data_in(7 DOWNTO 1); --算术右移1位

WHEN "1101" =&gt x := '0' & data_in(7 DOWNTO 1); --逻辑右移1位

WHEN "1110" =&gt x := data_in(0) & data_in(7 DOWNTO 1); --循环右移1位

WHEN others =&gt null;

END CASE;

CASE ctrl1 IS

WHEN "0000" | "0001" | "0010" | "0100" | "0101" | "0110" =&gt y := x; --n=0时不移动

WHEN "1000" =&gt y := x(5 DOWNTO 0) & x(0) & x(0); --算术左移2位

WHEN "1001" =&gt y := x(5 DOWNTO 0) & "00"; --逻辑左移2位

WHEN "1010" =&gt y := x(5 DOWNTO 0) & x(7 DOWNTO 6); --循环左移2位

WHEN "1100" =&gt y := x(7) & x(7) & x(7 DOWNTO 2); --算术右移2位

WHEN "1101" =&gt y := "00" & x(7 DOWNTO 2); --逻辑右移2位

WHEN "1110" =&gt y := x(1 DOWNTO 0) & x(7 DOWNTO 2); --循环右移2位

WHEN others =&gt null;

END CASE;

CASE ctrl2 IS

WHEN "0000" | "0001" | "0010" | "0100" | "0101" | "0110" =&gt data_out &lt= y; --n=0时不移动

WHEN "1000" =&gt data_out &lt= y(3 DOWNTO 0) & y(0) & y(0) & y(0) & y(0); --算术左移

左移寄存器vhdl_VHDL实验代码:8位移位寄存器相关推荐

  1. Verilog 编程实验(6)-4位移位寄存器的设计与实现

    原理图: Implementation part: module ShiftRegister(q3,data_in,clk,clr);output[3:0] q3; input[3:0] data_i ...

  2. 看门狗寄存器c语言代码_「正点原子NANO STM32F103开发板资料连载」第十一章 看门狗实验...

    1)实验平台:[正点原子] NANO STM32F103 开发板 2)摘自<正点原子STM32 F1 开发指南(NANO 板-HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 ...

  3. STM32学习心得二十一:实时时钟RTC和备份寄存器BKP特征、原理及相关实验代码解读

    记录一下,方便以后翻阅~ 主要内容 1) RTC特征与原理: 2) BKP备份寄存器特征与原理: 3) RTC常用寄存器+库函数介绍: 4) 相关实验代码解读. 实验内容: 因为没有买LCD屏,所以计 ...

  4. 左移寄存器vhdl_基于VHDL的移位寄存器设计

    摘 要 本文通过对EDA和VHDL的简单说明,阐述了基于 VHDL硬件描述语言的移位寄存器设计方法,程序简单,在电子 设计中有一定的推广价值. 关键词 移位寄存器   设计  EDA  VHDL 随着 ...

  5. 实验三 触发器、移位寄存器的设计和应用

    五.实验步骤与实验结果 1.用Verilog VHDL设计D触发器.打开QuarterII新建一个基于ALTERA的Cyclone系列FPGA芯片EP1C3T144C8N的项目保存在D:\dianlu ...

  6. HDLBITS笔记29:移位寄存器(包括4位移位寄存器,创建100位左/右旋转器,算术偏移,线性反馈移位寄存器等)

    题目1:4位移位寄存器(4-bit shift register) 构建一个具有异步复位.同步加载和使能功能的 4 位移位寄存器(右移位). reset:将移位寄存器重置为零. load: 加载数据[ ...

  7. VHDL——4位移位寄存器

    1.电路图 移位寄存器:具有存储代码,移位功能 移位:寄存器里所储存的代码能够在移位脉冲的作用下,依次左移或右移 2.VHDL语言 2.1 D触发器 library ieee; use ieee.st ...

  8. 计算机组成原理判零实验,计算机组成原理实验报告 进位位控制、通用寄存器判零实验...

    <计算机组成原理实验报告 进位位控制.通用寄存器判零实验>由会员分享,可在线阅读,更多相关<计算机组成原理实验报告 进位位控制.通用寄存器判零实验(17页珍藏版)>请在人人文库 ...

  9. 汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)

    From:https://www.cnblogs.com/zimmerk/articles/2520011.html From:https://blog.csdn.net/bjbz_cxy/artic ...

最新文章

  1. [python] 溜了,溜了,七牛云图片资源批量下载 自建图床服务器
  2. resize函数缩小图片的尺寸 车辆检测
  3. 算法练习day18——190409(Manacher)
  4. 在c语言中load,一道题理清Objective-C中的load和initialize
  5. 自动部署 管道 ci cd_自动化测试在CI CD管道中的作用
  6. Python 连接redis密码中特殊字符问题
  7. 武术与软件设计 - 简单即是最好
  8. 国外html游戏发展历史,17个国外游戏行业的网页设计欣赏
  9. 【2019/5/24】周进度报告
  10. 2020-8-4 Codeforces摸鱼报告
  11. iperf简介与下载安装
  12. 从五方面探究智慧城市顶层设计失败原因
  13. 用python编写加减乘除计算器_python实现加减乘除计算器
  14. 别去赌场了,你永远赢不了“凯利公式”
  15. constant api app
  16. Webstorm 2019激活码(有效期至2020年6月)
  17. python语音识别库kaldi_Kaldi 语音识别基础教程
  18. HyperLynx(六)参数扫描仿真
  19. Linux中怎么搭建主DNS、辅助DNS、缓存DNS服务器
  20. android淡入淡出动画循环,Android activity动画(淡入淡出)

热门文章

  1. JS三大经典变量命名法
  2. 数组常见异常 学习笔记
  3. 用C语言实现面向对象的开发
  4. Centos7.3 格式化和挂载数据盘
  5. B. 基本概念:类和对象
  6. 使用GY89的BMP180模块获取温度和压强(海拔)
  7. mac在查看jre通路
  8. [转载]JS语法字典
  9. (转)petshop4.0中的Profile理解(匿名用户身份)
  10. 【Scala】Scala语言的介绍以及循环的定义(while,for,break,九九乘法表的计算代码)