左移寄存器vhdl_VHDL实验代码:8位移位寄存器
--实验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" => x := data_in; --n=0时不移动
WHEN "1000" => x := data_in(6 DOWNTO 0) & data_in(0); --算术左移1位
WHEN "1001" => x := data_in(6 DOWNTO 0) & '0'; --逻辑左移1位
WHEN "1010" => x := data_in(6 DOWNTO 0) & data_in(7); --循环左移1位
WHEN "1100" => x := data_in(7) & data_in(7 DOWNTO 1); --算术右移1位
WHEN "1101" => x := '0' & data_in(7 DOWNTO 1); --逻辑右移1位
WHEN "1110" => x := data_in(0) & data_in(7 DOWNTO 1); --循环右移1位
WHEN others => null;
END CASE;
CASE ctrl1 IS
WHEN "0000" | "0001" | "0010" | "0100" | "0101" | "0110" => y := x; --n=0时不移动
WHEN "1000" => y := x(5 DOWNTO 0) & x(0) & x(0); --算术左移2位
WHEN "1001" => y := x(5 DOWNTO 0) & "00"; --逻辑左移2位
WHEN "1010" => y := x(5 DOWNTO 0) & x(7 DOWNTO 6); --循环左移2位
WHEN "1100" => y := x(7) & x(7) & x(7 DOWNTO 2); --算术右移2位
WHEN "1101" => y := "00" & x(7 DOWNTO 2); --逻辑右移2位
WHEN "1110" => y := x(1 DOWNTO 0) & x(7 DOWNTO 2); --循环右移2位
WHEN others => null;
END CASE;
CASE ctrl2 IS
WHEN "0000" | "0001" | "0010" | "0100" | "0101" | "0110" => data_out <= y; --n=0时不移动
WHEN "1000" => data_out <= y(3 DOWNTO 0) & y(0) & y(0) & y(0) & y(0); --算术左移
左移寄存器vhdl_VHDL实验代码:8位移位寄存器相关推荐
- Verilog 编程实验(6)-4位移位寄存器的设计与实现
原理图: Implementation part: module ShiftRegister(q3,data_in,clk,clr);output[3:0] q3; input[3:0] data_i ...
- 看门狗寄存器c语言代码_「正点原子NANO STM32F103开发板资料连载」第十一章 看门狗实验...
1)实验平台:[正点原子] NANO STM32F103 开发板 2)摘自<正点原子STM32 F1 开发指南(NANO 板-HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 ...
- STM32学习心得二十一:实时时钟RTC和备份寄存器BKP特征、原理及相关实验代码解读
记录一下,方便以后翻阅~ 主要内容 1) RTC特征与原理: 2) BKP备份寄存器特征与原理: 3) RTC常用寄存器+库函数介绍: 4) 相关实验代码解读. 实验内容: 因为没有买LCD屏,所以计 ...
- 左移寄存器vhdl_基于VHDL的移位寄存器设计
摘 要 本文通过对EDA和VHDL的简单说明,阐述了基于 VHDL硬件描述语言的移位寄存器设计方法,程序简单,在电子 设计中有一定的推广价值. 关键词 移位寄存器 设计 EDA VHDL 随着 ...
- 实验三 触发器、移位寄存器的设计和应用
五.实验步骤与实验结果 1.用Verilog VHDL设计D触发器.打开QuarterII新建一个基于ALTERA的Cyclone系列FPGA芯片EP1C3T144C8N的项目保存在D:\dianlu ...
- HDLBITS笔记29:移位寄存器(包括4位移位寄存器,创建100位左/右旋转器,算术偏移,线性反馈移位寄存器等)
题目1:4位移位寄存器(4-bit shift register) 构建一个具有异步复位.同步加载和使能功能的 4 位移位寄存器(右移位). reset:将移位寄存器重置为零. load: 加载数据[ ...
- VHDL——4位移位寄存器
1.电路图 移位寄存器:具有存储代码,移位功能 移位:寄存器里所储存的代码能够在移位脉冲的作用下,依次左移或右移 2.VHDL语言 2.1 D触发器 library ieee; use ieee.st ...
- 计算机组成原理判零实验,计算机组成原理实验报告 进位位控制、通用寄存器判零实验...
<计算机组成原理实验报告 进位位控制.通用寄存器判零实验>由会员分享,可在线阅读,更多相关<计算机组成原理实验报告 进位位控制.通用寄存器判零实验(17页珍藏版)>请在人人文库 ...
- 汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)
From:https://www.cnblogs.com/zimmerk/articles/2520011.html From:https://blog.csdn.net/bjbz_cxy/artic ...
最新文章
- [python] 溜了,溜了,七牛云图片资源批量下载 自建图床服务器
- resize函数缩小图片的尺寸 车辆检测
- 算法练习day18——190409(Manacher)
- 在c语言中load,一道题理清Objective-C中的load和initialize
- 自动部署 管道 ci cd_自动化测试在CI CD管道中的作用
- Python 连接redis密码中特殊字符问题
- 武术与软件设计 - 简单即是最好
- 国外html游戏发展历史,17个国外游戏行业的网页设计欣赏
- 【2019/5/24】周进度报告
- 2020-8-4 Codeforces摸鱼报告
- iperf简介与下载安装
- 从五方面探究智慧城市顶层设计失败原因
- 用python编写加减乘除计算器_python实现加减乘除计算器
- 别去赌场了,你永远赢不了“凯利公式”
- constant api app
- Webstorm 2019激活码(有效期至2020年6月)
- python语音识别库kaldi_Kaldi 语音识别基础教程
- HyperLynx(六)参数扫描仿真
- Linux中怎么搭建主DNS、辅助DNS、缓存DNS服务器
- android淡入淡出动画循环,Android activity动画(淡入淡出)