📄 yejing.vhd
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY CYS IS
PORT(CLK: IN STD_LOGIC;
CLEAR: IN STD_LOGIC; --清零命令
LEFT: IN STD_LOGIC; --左移命令
RIGHT: IN STD_LOGIC; --右移命令
BUSY: IN STD_LOGIC; --忙信号标志
DATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --8位数据输出
REQ : OUT STD_LOGIC); --请求信号
END ENTITY CYS;
ARCHITECTURE ART OF CYS IS
SIGNAL S:STD_LOGIC_VECTOR(31 DOWNTO 0); --汉字高位和低位的区位码
SIGNAL N:STD_LOGIC_VECTOR(3 DOWNTO 0); --显示十四个汉字的选择信号
SIGNAL COUNT:STD_LOGIC_VECTOR(2 DOWNTO 0); --五个字节命令的计数器
SIGNAL SEL:STD_LOGIC; --显示十六个汉字的进位时钟信号
SIGNAL GATECLOCK:STD_LOGIC; --5个字节命令的计数器时钟信号
SIGNAL SCANCLK:STD_LOGIC; --分频时钟信号
BEGIN
PROCESS(CLK,SCANCLK)
VARIABLE SCAN: STD_LOGIC_VECTOR(20 DOWNTO 0); --分频进程
BEGIN
IF CLK'EVENT AND CLK='1' THEN
IF SCAN="111111111111111111111" THEN SCAN:="000000000000000000000";
ELSE SCAN:=SCAN+1;
END IF;
END IF;
SCANCLK<=SCAN(3);
END PROCESS;
PROCESS(GATECLOCK) --5个字节计数器的进程
BEGIN
IF GATECLOCK'EVENT AND GATECLOCK='1' THEN
IF COUNT="100" THEN
COUNT<="000";
ELSE
COUNT<=COUNT+1;
END IF;
END IF;
END PROCESS;
PROCESS (SCANCLK) IS
BEGIN
IF RISING_EDGE(SCANCLK) THEN
IF BUSY = '0' THEN
IF CLEAR = '1' THEN
DATA<=X"F4";
ELSIF RIGHT='1' THEN
DATA<=X"F8";
ELSIF LEFT='1' THEN
DATA<=X"F7";
ELSE
CASE COUNT IS
WHEN "000"=>DATA<=X"F0"; SEL<='0';
WHEN "001"=>DATA<=S(31 DOWNTO 24);
WHEN "010"=>DATA<=S(23 DOWNTO 16);SEL<='1';
WHEN "011"=>DATA<=S(15 DOWNTO 8);
WHEN "100"=>DATA<=S(7 DOWNTO 0);
WHEN OTHERS=>NULL;
END CASE;
END IF;
GATECLOCK<='1';
ELSE
GATECLOCK<='0';
END IF;
END IF;
END PROCESS;
REQ<='1' WHEN GATECLOCK='1' ELSE
'0';
PROCESS(SEL)
BEGIN
IF SEL'EVENT AND SEL='0' THEN
N<=N+1;
CASE N IS
WHEN "0000"=> S<=X"00003107"; -- 实
WHEN "0001"=> S<=X"01002F10"; -- 验
WHEN "0010"=> S<=X"02003756"; -- 六
WHEN "0011"=> S<=X"03003627"; -- 第
WHEN "0100"=> S<=X"0400243C"; -- 四
WHEN "0101"=> S<=X"05001315"; -- 组
WHEN "0110"=> S<=X"06002C54"; -- 姓
WHEN "0111"=> S<=X"0700351D"; -- 名
WHEN "1000"=> S<=X"00011729"; -- 聂
WHEN "1001"=> S<=X"01012B1C"; -- 家
WHEN "1010"=> S<=X"02011F08"; -- 宁
WHEN "1011"=> S<=X"0301165B"; -- 第
WHEN "1100"=> S<=X"0401110D"; -- 六
WHEN "1101"=> S<=X"05012B12"; -- 号
WHEN "1110"=> S<=X"0601360E"; -- 台
WHEN "1111"=> S<=X"07011633"; -- 位
WHEN OTHERS=>NULL;
END CASE;
END IF;
END PROCESS;
END ARCHITECTURE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -