新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 循環(huán)冗余校驗(yàn)碼的單片機(jī)及CPLD實(shí)現(xiàn)

循環(huán)冗余校驗(yàn)碼的單片機(jī)及CPLD實(shí)現(xiàn)

作者: 時(shí)間:2012-03-20 來(lái)源:網(wǎng)絡(luò) 收藏

4 冗余碼的

冗余碼的硬件,其速度更快,性能更好,而且只占用極少的內(nèi)的資源。本人用Xilinx公司的XCV9536芯片,基于以下VHDL 代碼,了8位CRC碼生成電路。代碼下VHDL代碼,實(shí)現(xiàn)了8位CRC碼生成電路。代碼中,s_in為輸入串行數(shù)據(jù),q為輸出CRC碼,d_new為當(dāng)前CRC碼。
Library IEEE;
use IEEE.std_logic_1164.all;
entity crc is
port(clk,s_in,reset:in STD_LOGIC,q:out STD_LOGIC_VECTOR (7 downto 0));
end crc;
architecture crc_arch of crc is
signal t1,t2,t3:std_logic;
signal d_new:std_logic_vector(7 downto 0);
begin
t1=d_new(0)xor s_in; --t1為最低位與輸入異或值
t2=d_new(4)xor '1';
t3=d_new(3)xor'1';
process(clk,reset)
begin
if clk event and clk='1'then
if reset='1'then
d_new=x0; --復(fù)位時(shí),CRC碼置零
elsif t1='1'then
d_new=t1d_new(7 downto 5)t2t3td_new(2 downto 1);--t1為1時(shí)的新CRC碼
elsif t1='0'then
d_new=t1d_new(7 downto 1); --t1為0時(shí)的新CRC碼
end if;
end if;
end process;
q=d_new;--輸出CRC碼
end crc_arch;

5 總結(jié)

基于以上介紹的8位冗余碼的軟件及硬件實(shí)現(xiàn)方法,可以設(shè)計(jì)各種類(lèi)型的循環(huán)冗余校檢方法。由上述例程可以看出,循環(huán)冗余碼校驗(yàn)是一種可靠性高、易于實(shí)現(xiàn)的校驗(yàn)方法。


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉