左移寄存器vhdl_双向移位寄存器VHDL设计.doc
双向移位寄存器VHDL设计.doc
双向移位寄存器
引言
移位寄存器就是指具有移位功能的触发器组,它是在普通寄存器的基础上添加了移位功能的一种特殊的寄存器。通常,移位功能就是指在寄存器里面存储的二进制数据能够在时钟信号的控制下依次左移或者右移。移位寄存器是一种非常有用的时序逻辑电路,它常用于数据的串/并转换、并/串转换、数值运算、数据处理以及乘法移位操作等。
移位寄存器按照移位方向来进行分类,可以分类左移移位寄存器、右移移位寄存器和双向移位寄存器等。本文将介绍双向移位寄存器。
2.VHDL 程序
双向移位寄存器的VHDL程序如下:
LIBRARY ieee; --打开需要用到的库
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;
ENTITY rom_shift IS --实体说明
PORT
(
clk : INSTD_LOGIC;
d : INSTD_LOGIC;
dir: INSTD_LOGIC;
q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
);
END rom_shift;
ARCHITECTURE behave OF rom_shift IS --结构体定义
SIGNALqn: STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS (clk)
BEGIN
IF (clk'EVENT AND clk='1') THEN
IF dir='0' THEN
qn(0)<=d; --将输入数据d赋给最低位
FOR i IN 1 TO 3 LOOP --数据由低位向高位移
qn(i)<=qn(i-1);
END LOOP;
ELSE
qn(3)<=d; --若dir=‘1’
FOR i IN 2 DOWNTO 0 LOOP --数据由高位向低位移
qn(i)<=qn(i+1);
END LOOP;
END IF;
END IF;
END PROCESS;
q<=qn;
END behave;
3.仿真结果如下:
实现功能:由程序可以看出,输入信号有clk,dir,d,其中clk为时钟信号,dir为移位方向控制信号。当dir=0时,使输入信号由低位向高位移;当dir=1时,输入信号由高位向低位移。
二、从下列各题中任选3个,或任选2个并再自选一个难度相当的通信或电子系统,编写完代码后在计算机上仿真,提交完整的文档(包括:设计原理、VHDL程序、仿真结果等),并在课堂上进行交流。
设计一个按键脉冲宽度处理电路。假设按键的高电平脉冲宽度可能为10-100个时钟宽度,设计一个电路使每次按键在按键松开(释放)时输出一个时钟周期的高电平脉冲。根据代码画出电路结构示意图。
设计原理:此设计是用于按键防抖动。首先设计一个计数器计算出按键被按下多长时间,然后进行判断。若按键按下去的时间在10——100个时钟宽度以内,当按键松开时,输出一个时钟周期的高电平脉冲。
VERILOG 程序:
module pushbutton(clk,pushdown,clkout); //定义模块名,端口名称
input clk,pushdown; //定义输入端口
output clkout; //定义输出端口
reg[7:0] cnt; //定义计数器为8位寄存器
reg clkout;
always @(posedge clk) //在时钟上升沿触发
begin
if(!pushdown) //当按键没按下时,计数值为0
cnt<=0;
else
cnt<=cnt+1;
左移寄存器vhdl_双向移位寄存器VHDL设计.doc相关推荐
- 左移寄存器vhdl_双向移位寄存器VHDL设计
双向移位寄存器 1 . 引言 移位寄存器就是指具有移位功能的触发器组, 它是在普通寄存器的基础上添加了 移位功能的一种特殊的寄存器.通常,移位功能就是指在寄存器里面存储的二进制 数据能够在时钟信号的控 ...
- 左移寄存器vhdl_8位移位寄存器vhdl代码
vhdl介绍: VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中.它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中.当然在一些实力较为雄厚的单位,它也被用来设 ...
- 左移寄存器vhdl_基于VHDL的移位寄存器设计
摘 要 本文通过对EDA和VHDL的简单说明,阐述了基于 VHDL硬件描述语言的移位寄存器设计方法,程序简单,在电子 设计中有一定的推广价值. 关键词 移位寄存器 设计 EDA VHDL 随着 ...
- [EDA]8位双向移位寄存器的设计
系统功能 设计一个8位双向移位寄存器,实现并行输入数据.数据左移.右移.清空数据的功能. 设计要求 (1)可以并行置数(用4位拨码开关置数两次得到8位数据): (2)并行输出(8个led显示)功能: ...
- 8位双向移位寄存器verilog设计
设计实现功能 设计一个8位双向移位寄存器,实现并行输入数据.数据左移.右移.清空数据的功能. 程序主要包括 一, Key1 控制拨码输入: a) key_flag1, key_state1实现Key1 ...
- VHDL移位寄存器的设计与实现
主要内容: 本设计根据计算机组成原理中移位寄存器的相关知识,利用VHDL语言设计了三种不同的寄存器:双向移位寄存器.串入串出(SISO)移位寄存器.串入并出(SIPO)移位寄存器. 摘要:系统使用ED ...
- 四类九种移位寄存器总结(循环(左、右、双向)移位寄存器、逻辑和算术移位寄存器、串并转换移位寄存器、线性反馈移位寄存器LFSR|verilog代码|Testbench|仿真结果)
移位寄存器总结 一.前言 二.简单循环左移/右移/双向移位寄存器 2.1 简单循环左移/右移/双向移位寄存器 2.2 verilog代码 2.3 Testbench 2.4 仿真结果 三.逻辑移位与算 ...
- 4片74LS194接成16位双向移位寄存器
本例的设计和上一篇博文"2片74LS194接成8位双向移位寄存器"的设计思路大致相同, 读者在理解上一篇博文的基础上, 只需再把握好"除最低位74LS194的SR和最高位 ...
- 试用D触发器和必要的门电路(或最小数量的中规模集成电路芯片)设计两位串行输入、并行输出双向移位寄存器. 寄存器有X、K两个输入端, K控制移位方向, X输入数据(题目全文见本博文示)
题: 试用D触发器和必要的门电路(或最小数量的中规模集成电路芯片)设计两位串行输入.并行输出双向移位寄存器. 寄存器有X.K两个输入端, K控制移位方向, X输入数据. K=0时, 寄存器数据从高位 ...
最新文章
- Python爬虫项目--爬取某宝男装信息 附带源码
- 百度地图- - - 鹰眼轨迹- - - -实时定位
- MySQL 高级 - 存储过程 - 语法 - while循环
- 【AtCoder】diverta 2019 Programming Contest 2
- 大数据独角兽TOP10榜单发布,“内永洪,外Tableau”领跑BI领域
- 华为前端工程师分享:查明网站访问故障原因,教你4招快速应对
- zeppelin k8s安装部署和基本使用教程(在线的分析工具)
- STL标准模版库---set操作
- 无线通讯射频测试软件,ISIS射频工具(专业射频测试软件)V2.03 正式版
- 机器人领域期刊会议汇总
- 创业感悟:对未来越有信心,对现在就越有耐心
- 第十三章:(1)CompletableFuture异步回调
- Android接收开机广播接收速度慢的原因
- mongodb mysql 知乎_为什么 MongoDB 索引选择B-树,而 Mysql 索引选择B+树(精干总结)...
- 端午节,我用 Python 画了一盘粽子送给大家
- Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: “/zhu“
- git常用命令和基本操作
- 世界上最全的解酒方法
- ROOT/RStringView.hxx:32:37: error: ‘experimental’ in namespace ‘std’ does not name a type
- 新概念1 0--12
热门文章
- linux系统查询网卡信息,Linux下如何查询电脑中的网卡详细信息呢?
- 一位程序员的爱情表白(娱乐版)
- linux内核映射一个页,固定映射地址和 ioremap
- vue微信公众号监听关闭页面
- 英特尔图形安装程序的linux,英特尔图形驱动程序现在在Windows/Linux之间共享约60%的代码库...
- 881计算机应用和基础,首都师范大学
- 图片相相似度计算(Hash、SSIM、compareHist)
- 3-MongoDB常用的命令-数据库创建-文档插入
- 百度大力发展直播:0佣金 推流量
- 程序性能分析工具—gprof