⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hamming.vhd

📁 This is the course for VHDL programming
💻 VHD
字号:
--HAMMING ERROR CORRECTION CHIPlibrary ieee;use ieee.std_logic_1164.all;entity HAM_CHIP is	port (CPU_BUS:  inout std_logic_vector(8 downto 1);		RAM_BUS:  inout std_logic_vector(8 downto 1);		PRAM_BUS: inout std_logic_vector(3 downto 0);		MEMR_BAR,MEMW_BAR:in std_logic);end HAM_CHIP;architecture STRUCT of HAM_CHIP is	signal CORR_BUS: STD_LOGIC_VECTOR(8  DOWNTO  1);	signal SYNDROME,PARITY: STD_LOGIC_VECTOR(3  DOWNTO  0);	begin	RAM_BUS<=CPU_BUS when MEMW_BAR='0' else "ZZZZZZZZ";--	PARITY GENERATOR	PARITY(0)<= CPU_BUS(1) xor CPU_BUS(2) xor 			CPU_BUS(4) xor CPU_BUS(5) xor 			CPU_BUS(7) ; 	PARITY(1)<= CPU_BUS(1) xor CPU_BUS(3) xor 			CPU_BUS(4) xor CPU_BUS(6) xor 			CPU_BUS(7)  ;  	PARITY(2)<= CPU_BUS(2) xor CPU_BUS(3) xor 			CPU_BUS(4) xor CPU_BUS(8) ;			 	PARITY(3)<= CPU_BUS(5) xor CPU_BUS(6) xor 			CPU_BUS(7) xor CPU_BUS(8) ;			PRAM_BUS<=PARITY when MEMW_BAR='0' else "ZZZZ";--	SYNDROME GENERATOR	SYNDROME(0)<= RAM_BUS(1) xor RAM_BUS(2) xor 			RAM_BUS(4) xor RAM_BUS(5) xor 			RAM_BUS(7)  xor PRAM_BUS(0);  	SYNDROME(1)<= RAM_BUS(1) xor RAM_BUS(3) xor 			RAM_BUS(4) xor RAM_BUS(6) xor 			RAM_BUS(7)  xor PRAM_BUS(1);  	SYNDROME(2)<= RAM_BUS(2) xor RAM_BUS(3) xor 			RAM_BUS(4) xor RAM_BUS(8)			 xor PRAM_BUS(2);  	SYNDROME(3)<= RAM_BUS(5) xor RAM_BUS(6) xor 			RAM_BUS(7) xor RAM_BUS(8) 			 xor PRAM_BUS(3);  --	CORRECTION UNIT	CORR_PROC:process(RAM_BUS,SYNDROME)		variable temp: STD_LOGIC_VECTOR(8  DOWNTO 1 );	begin		temp:=RAM_BUS;		case SYNDROME is			when "0000"=>null;			when "0001"=>null;			when "0010"=>null;			when "0100"=>null;			when "1000"=>null;			when "0011"=>temp(1):=not temp(1);			when "0101"=>temp(2):=not temp(2);			when "0110"=>temp(3):=not temp(3);			when "0111"=>temp(4):=not temp(4);			when "1001"=>temp(5):=not temp(5);			when "1010"=>temp(6):=not temp(6);			when "1011"=>temp(7):=not temp(7);			when "1100"=>temp(8):=not temp(8);			when others=>temp:="XXXXXXXX";				assert false report "Unknown syndrome";		end case;		CORR_BUS<=temp;	end process CORR_PROC;	CPU_BUS<=CORR_BUS when MEMR_BAR='0' else "ZZZZZZZZ";end STRUCT;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -