crc16generator.vhd

来自「这是一个SD卡的TESTBENCH,源码中有如何产生一个特定的命令序列的样例。支」· VHDL 代码 · 共 35 行

VHD
35
字号
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 + =
减小字号Ctrl + -
显示快捷键?