📄 crc16generator.vhd
字号:
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
USE IEEE.STD_LOGIC_UNSIGNED.ALL ;
use work.PCK_CRC16_D1.all;
--CRC-CCITT=x^16+x^12+x^5+1
ENTITY CRC16Generator IS --顶层实体
PORT ( RST:in std_logic:='0';--异步清零
TestData:in std_logic:='0';--在时钟上升沿时读入的数据
Clock:in std_logic:='0';--控制时钟
Hold:in std_logic:='0';--保持数据,为1时则即使读入新数据输出不变
CRC:out std_logic_vector(15 downto 0)); --16位CRC校验码
END CRC16Generator;
ARCHITECTURE BEHAV_CRC16 OF CRC16Generator IS
BEGIN
PROCESS(RST,Clock,Hold)--主进程
--CRCVaria为描述CRC输出的变量
variable CRCVaria : STD_LOGIC_VECTOR(15 DOWNTO 0):=(others=>'0');
BEGIN
if RST='1' then
CRCVaria:=(others=>'0');
else if Hold='0' then--允许计数
if Clock'event and Clock='1' then--检测到上升沿
CRCVaria:=nextCRC16_D1(TestData,CRCVaria);--读入数据并产生CRC码
end if;
end if;
end if;
CRC<=CRCVaria;
END PROCESS;
END BEHAV_CRC16;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -