电工技术|移位寄存器的VHDL描述

   更新日期:2017-03-28     来源:建材之家    作者:水电之家    浏览:17    评论:0    
核心提示: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

沧州诚泽管道 管件行业的后起之秀

推荐简介:记者(张编辑)今日获悉   沧州诚泽管道有限公司位于“全国较大的压力管道装备制造业基地”河北省盐山县,占地面积68800平方米,建筑面积28800平方米,投资总额达一亿元,为华北地区重点管道生产企业。距天津新港一百公里,首都国际机场二百公里,交通十分便利。诚泽管道是一家为国内外石油、炼化、化工、冶金、电力、造船、输气、管道输送等行业提供高端产品与服务的专业制造商。公司技术力......
水电之家讯: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)

VARIABLE x,y : STD_LOGIC_VECTOR(7 DOWNTO 0);

VARIABLE ctrl0,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);

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); --算术左移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;

水电之家为您提供最全面的管材,管件,水电,电线,电工,管材水电品牌的装修知识点和各种管材水电的导购与在线购买服务,拥有最便宜的管材水电价格和最优质的售后服务,每天都有秒杀的抢购活动哦!敬请登陆水电之家:http://shuidian.jc68.com/
小程序码
 
打赏
 
更多>文章标签:管件
更多>同类水电电工资讯
0相关评论

推荐图文更多...
点击排行更多...
最新视频更多...
推荐产品更多...
老姚之家 | 全景头条 | 照明之家 | 防水之家 | 防盗之家 | 区快洞察 | 潜江建材 | 仙桃建材 | 恩施建材 | 随州建材 | 咸宁建材 | 黄冈建材 | 荆州建材 | 孝感建材 | 荆门建材 | 鄂州建材 | 襄樊建材 | 宜昌建材 | 十堰建材 | 黄石建材 | 长沙建材 | 湘西建材 | 娄底建材 | 怀化建材 | 永州建材 | 郴州建材 |
建材 | 720全景 | 企业之家 | 移动社区 | 关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图 | 排名推广 | 广告服务 | 积分换礼 | RSS订阅 | sitemap | 粤ICP备14017808号-1
(c)2015-2017 BYBC.CN SYSTEM All Rights Reserved
Powered by 电工之家