设计一个8位双向循环移位寄存器vhdl
状态表如下:
CLK | RESET | LOAD | M | 工作状态 |
× |
0 | × |
× |
复位 |
↑文章来源:https://www.toymoban.com/news/detail-508373.html |
1 | 1 | × |
置数 |
↑ |
1 | 0 | 1 | 左移 |
↑ |
1 | 0 | 0 | 右移 |
(4)不考虑串行输出,移动不能用移位操作符。文章来源地址https://www.toymoban.com/news/detail-508373.html
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY H2 IS
PORT(CLK,LOAD,M,RESET:IN STD_LOGIC;
DATA:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END ENTITY H2;
ARCHITECTURE hbv OF H2 IS
BEGIN
PROCESS(CLK,RESET,M,LOAD)
VARIABLE Q1 : STD_lOGIC_VECTOR(7 DOWNTO 0);
BEGIN
IF RESET = '0' THEN --RESET低电平有效
Q1 := (OTHERS=>'0');
ELSIF CLK'EVENT AND CLK='1' THEN
IF LOAD = '1' THEN --预置
Q1 := DATA;
ELSE
IF M ='0' THEN --右移
Q1 := Q1(0)&Q1(7 DOWNTO 1);
ELSIF M ='1' THEN --左移
Q1 := Q1(6 DOWNTO 0)&Q1(7);
END IF;
END IF;
END IF;
Q<=Q1;
END PROCESS;
END ARCHITECTURE hbv;
到了这里,关于设计一个8位双向循环移位寄存器vhdl的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!