移位寄存器的VHDL描述

上传人:公**** 文档编号:470489262 上传时间:2023-01-26 格式:DOCX 页数:3 大小:17.50KB
返回 下载 相关 举报
移位寄存器的VHDL描述_第1页
第1页 / 共3页
移位寄存器的VHDL描述_第2页
第2页 / 共3页
移位寄存器的VHDL描述_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《移位寄存器的VHDL描述》由会员分享,可在线阅读,更多相关《移位寄存器的VHDL描述(3页珍藏版)》请在金锄头文库上搜索。

1、本文格式为Word版,下载可任意编辑移位寄存器的VHDL描述 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:

2、 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) VARIABLE x,y : STD_LOGIC_VECTOR(7 DOWNTO 0); VARIABLE ctrl0,ctrl1,ctrl2 : STD_LOGIC_VECTOR (3 DOWNTO 0); BEGIN IF (clockEVENT AND clock = 1)THEN-产

3、生掌握向量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); 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

4、= 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 WHE

5、N 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

6、 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); -算术左移4位 WHEN 1001 = data_out = y(3 DOWNTO 0) 0000; -规律左移4位 WHEN 1010 | 1110 = data_out = y(3 DOWNTO 0) y(7 DOWNTO 4);-循环左(右)移4位 WHEN 1100 = data_out = y(7) y(7) y(7) y(7) y(7 DOWNTO 4);-算术右移4位 WHEN 1101 = data_out = 0000 y(7 DOWNTO 4);-规律右移4位 WHEN others = null; END CASE; END IF; END PROCESS; END behav; 第 1 页 共 1 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号