精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于EP2C35-672 FPGA實(shí)現(xiàn)CRC循環(huán)冗余校驗(yàn)的自定義指令設(shè)計(jì)

牽手一起夢(mèng) ? 來(lái)源:微計(jì)算機(jī)信息 ? 作者:師亞莉 ? 2020-10-04 14:53 ? 次閱讀

通信系統(tǒng)中,為確保數(shù)據(jù)傳輸和存儲(chǔ)的可靠性,引入了信道編碼。一是可使得編碼后的碼流頻譜適應(yīng)信道頻率特性,二是可檢測(cè)并糾正傳輸中的誤碼。前者屬于譜成形技術(shù),后者屬于差錯(cuò)控制技術(shù)。循環(huán)冗余校驗(yàn)(CRC)屬于后者,它是通過(guò)增加冗余信息,達(dá)到發(fā)現(xiàn)誤碼的目的。CRC校驗(yàn)由于檢錯(cuò)能力強(qiáng),被廣泛用于各種數(shù)據(jù)校驗(yàn)中。

編程片上系統(tǒng)(SOPC)是一種特殊的嵌入式系統(tǒng),它可將處理器、存儲(chǔ)器、外設(shè)接口和多層次用戶(hù)電路等系統(tǒng)設(shè)計(jì)需要的功能模塊集成到一塊芯片上。Nios II是Altera公司的SOPC解決方案,是一個(gè)運(yùn)行在FPGA上的32位RSIC處理器。Nios II系列軟核處理器最大的特點(diǎn)之一是可靈活地增加用戶(hù)指令,可以把系統(tǒng)中用軟件處理耗時(shí)多的關(guān)鍵算法硬件邏輯電路來(lái)實(shí)現(xiàn),大大提高系統(tǒng)的效率。

本設(shè)計(jì)即是采用Altera公司的CYCLONEII芯片EP2C35-672 FPGA,依靠Nios II軟核和硬件邏輯結(jié)合的速度優(yōu)勢(shì),實(shí)現(xiàn)基于Nios II的HDLC協(xié)議控制系統(tǒng)中CRC循環(huán)冗余校驗(yàn)的自定義指令實(shí)現(xiàn)。

1 循環(huán)冗余校驗(yàn)CRC

循環(huán)冗余校驗(yàn)碼檢錯(cuò)能力強(qiáng)。校驗(yàn)的基本思想是利用線(xiàn)性編碼理論,在發(fā)送端根據(jù)傳送的k位二進(jìn)制碼序列,以一定的規(guī)則產(chǎn)生(n-k)位校驗(yàn)監(jiān)督碼,并附在信息碼后,構(gòu)成一個(gè)n位的二進(jìn)制碼序列來(lái)發(fā)送,如圖1。接收端則對(duì)收到的信息采用和發(fā)端相同的算法進(jìn)行校驗(yàn),若有錯(cuò),發(fā)端重新發(fā)送數(shù)據(jù) 。

基于EP2C35-672 FPGA實(shí)現(xiàn)CRC循環(huán)冗余校驗(yàn)的自定義指令設(shè)計(jì)

圖1 加入CRC校驗(yàn)的碼序列

CRC校驗(yàn)的編碼原理:

(1) 首先將待發(fā)送數(shù)據(jù)序列D(x) 乘以Xk ,其中k 為生成多項(xiàng)式G (x) 的最高次冪;

(2) 將乘得的結(jié)果Xk?D (x) 用生成多項(xiàng)式G (x) 去除;

(3) 忽略其商,僅將其余數(shù)R (x) 取出,并與Xk ?D(x) 相加,形成n位輸出碼數(shù)據(jù)序列D′(x), 即:D′(x) = Xk?D (x) + R (x);

最終得到的余式R(x)即為CRC校驗(yàn)碼。它跟在信息碼后一并發(fā)往信道。

常見(jiàn)的生成多項(xiàng)式有:

對(duì)不同的類(lèi)型,CRC的檢錯(cuò)能力是有差異的。冗余位越多,檢錯(cuò)能力越強(qiáng),但實(shí)現(xiàn)起來(lái)就會(huì)相對(duì)復(fù)雜,并且占用的開(kāi)銷(xiāo)也會(huì)增大。實(shí)際中,總是基于產(chǎn)品的應(yīng)用領(lǐng)域綜合考慮來(lái)做出最合適的選擇。

2 CRC校驗(yàn)的自定義指令實(shí)現(xiàn)

2.1 自定義指令

自定義指令就是用戶(hù)讓Nios II軟核完成的功能,功能由電路模塊來(lái)實(shí)現(xiàn),電路模塊用硬件描述語(yǔ)言(HDL)描述,連接到Nios II軟核的算術(shù)邏輯部件上,如圖2。這樣,用戶(hù)指令就可以把系統(tǒng)中用軟件處理耗時(shí)多的關(guān)鍵算法用硬件邏輯電路來(lái)實(shí)現(xiàn)。Nios II處理器支持256個(gè)具有固定或可變時(shí)鐘周期操作的定制指令,允許設(shè)計(jì)人員利用擴(kuò)展CPU 指令集,通過(guò)提升那些對(duì)時(shí)間敏感的應(yīng)用軟件的運(yùn)行速度,來(lái)提高系統(tǒng)性能。

圖2 定制指令邏輯連接到Nios II的ALU

2.2 CRC算法研究

(1) 串行實(shí)現(xiàn)法

串行算法實(shí)現(xiàn)原理比較簡(jiǎn)單,如圖3。只需要移位寄存器和異或門(mén)這些基本的邏輯器件,所以很適合硬件電路。但是串行法一個(gè)時(shí)鐘周期只能計(jì)算一位數(shù)據(jù),只適用于數(shù)據(jù)串行傳輸?shù)膱?chǎng)合,接入并行處理的CPU時(shí)會(huì)大大降低效率。

圖3 CRC串行算法原理圖

(2) 并行計(jì)算法

并行算法可以在一個(gè)時(shí)鐘內(nèi)對(duì)多位數(shù)據(jù)進(jìn)行編碼,提高計(jì)算速度。信息碼一次并行輸入,經(jīng)過(guò)必要的處理時(shí)間即可輸出編碼結(jié)果,大大縮短了處理時(shí)間,具有很大的優(yōu)越性。目前采用的CRC并行算法有查表法等,這些方法有一定的優(yōu)勢(shì),但也有缺點(diǎn)。本設(shè)計(jì)所采取的是并行計(jì)算法,不僅保持了并行算法的優(yōu)勢(shì),而且還克服了查表法的缺點(diǎn)。

◆ 與查表法比較,這種方法消除了查表法所必須的CRC余數(shù)表,減少了資源占用,降低了成本。不再需要存放余數(shù)表的高速存儲(chǔ)器,減少了時(shí)延,提高了計(jì)算速度。

◆ 可以全部用FPGA的內(nèi)部資源實(shí)現(xiàn),總的輸出時(shí)延為兩級(jí)異或門(mén)時(shí)延和寄存器的鎖存時(shí)延之和,約為5-10ns,而查表法的總時(shí)延達(dá)到了100ns,因此計(jì)算法可以用于處理時(shí)鐘速率很高的場(chǎng)合。

◆ 查表法的并行度局限于8位。而計(jì)算法可以靈活地實(shí)現(xiàn)各種并行度的CRC計(jì)算。由于可以采用更大的并行度(如32位并行計(jì)算,甚至64位的并行計(jì)算),因此降低了處理時(shí)鐘周期,并且與CPU的接入也更加方便。

總之,這種并行實(shí)現(xiàn)方式適用于各種數(shù)據(jù)寬度CRC 校驗(yàn),而且隨著并行輸入數(shù)據(jù)寬度的加寬,運(yùn)算速度也加快。它的缺點(diǎn):由于并行計(jì)算是通過(guò)多級(jí)反饋實(shí)現(xiàn)的,故復(fù)雜的反饋組合電路會(huì)帶來(lái)較大的門(mén)延遲,但QuartusII開(kāi)發(fā)環(huán)境通過(guò)優(yōu)化組合電路的結(jié)構(gòu),可以很大程度上降低延遲,使電路適用于較高的時(shí)鐘頻率。

并行計(jì)算法的具體原理推導(dǎo)如下:

設(shè)為第i個(gè)數(shù)據(jù)移位j次后寄存器的最終狀態(tài),為第i個(gè)數(shù)據(jù)移位j次后寄存器的狀態(tài),為輸入數(shù)據(jù)的第j個(gè)數(shù)據(jù),為生成多項(xiàng)式的第i位數(shù)值,j的取值范圍由一次可校驗(yàn)的總數(shù)據(jù)位數(shù)決定,k為生成多項(xiàng)式的最高次冪,這里,j = 0、1、2 …… 32,k為16。其遞推公式為:并且令;按照遞推公式對(duì)移位寄存器的每一位進(jìn)行計(jì)算,直到j(luò)=0,此次計(jì)算才結(jié)束,所有值都計(jì)算完畢后,得到中間結(jié)果:,其中為0或1;由于輸入數(shù)據(jù)的高低位與寄存器高低位相反,因此需再進(jìn)行一次倒排序才可得到正確的輸出數(shù)據(jù):

,即得到了這組數(shù)據(jù)最終的CRC運(yùn)算結(jié)果。

2.3 CRC算法的VHDL實(shí)現(xiàn)

據(jù)上述原理推算了32位并行數(shù)據(jù)CRC異或邏輯關(guān)系,并用VHDL實(shí)現(xiàn)了并行CRC算法,添加到Nios II配置表中形成自定義指令,在C程序中通過(guò)函數(shù)調(diào)用就能以很高的速率完成復(fù)雜的CRC運(yùn)算,極大地提高了系統(tǒng)的效率。

圖4為CRC并行計(jì)算法的仿真結(jié)果。

圖4 CRC并行算法仿真結(jié)果

2.4 使用Nios II的自定義指令提高系統(tǒng)性能

CRC校驗(yàn)算法需要大量的邏輯運(yùn)算,如果用軟件實(shí)現(xiàn)要占很多個(gè)時(shí)鐘周期,系統(tǒng)的效率降低,而用硬件完成則僅需幾個(gè)時(shí)鐘周期。

定制指令邏輯和Nios II的連接在SOPC Builder 中完成。Nios II CPU配置向?qū)峁┝艘粋€(gè)可添加256條定制指令的圖形用戶(hù)界面,在該界面中導(dǎo)入設(shè)計(jì)文件,設(shè)置定制指令名,并分配定制指令所需的CPU時(shí)鐘周期數(shù)目。系統(tǒng)生成時(shí),Nios II IDE為每條用戶(hù)指令產(chǎn)生一個(gè)在系統(tǒng)頭文件中定義的宏,可以在C(或C++)應(yīng)用程序代碼中直接調(diào)用這個(gè)宏。表1為 Nios II軟件實(shí)現(xiàn)CRC算法和自定義指令實(shí)現(xiàn)性能對(duì)比。

表1 Nios II軟件實(shí)現(xiàn)CRC算法和自定義指令實(shí)現(xiàn)性能對(duì)比

可見(jiàn),對(duì)于2字節(jié)數(shù)據(jù),自定義指令的運(yùn)算速度是軟件法的2~10倍,且使用的資源大大降低。表1中的自定義指令是對(duì)16位數(shù)據(jù)而言的。我們所采用的幀結(jié)構(gòu),數(shù)據(jù)段有2字節(jié),控制段1字節(jié),地址段1字節(jié),因此CRC計(jì)算時(shí)采用32位。從仿真圖4中可以看到,從輸入數(shù)據(jù)到計(jì)算完成用了7~8ns,而工作頻率50MHz的Nios II系統(tǒng)一個(gè)時(shí)鐘周期為20ns。這樣,完全可以在一個(gè)周期內(nèi)完成計(jì)算,加上裝載及返回時(shí)所需的額外周期,根據(jù)表1的數(shù)據(jù)進(jìn)行近似的線(xiàn)性分析,可知最終一次CRC校驗(yàn)需要16~20個(gè)周期,比軟件法提高了4~40倍,大大提高了系統(tǒng)處理的速度。

3 結(jié)語(yǔ)

CRC校驗(yàn)由于檢錯(cuò)能力強(qiáng),被廣泛應(yīng)用在各種數(shù)據(jù)校驗(yàn)中。本文研究了CRC并行算法,并且通過(guò)增加自定義指令的方法,把用軟件處理耗時(shí)多的CRC校驗(yàn)算法在Nios II系統(tǒng)中用硬件邏輯電路來(lái)實(shí)現(xiàn),極大提高了系統(tǒng)的效率。實(shí)驗(yàn)結(jié)果也表明了該方法的優(yōu)勢(shì)。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19169

    瀏覽量

    229164
  • FPGA
    +關(guān)注

    關(guān)注

    1626

    文章

    21671

    瀏覽量

    601918
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7453

    瀏覽量

    163609
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CRC循環(huán)冗余校驗(yàn)的算法

    想問(wèn)下51單片機(jī)和所有嵌入式中一個(gè)很基本也很常見(jiàn)的問(wèn)題,CRC循環(huán)冗余校驗(yàn)的算法中生成多項(xiàng)式為什么要那樣取(有個(gè)生成多項(xiàng)式的表格),如果信息段中一位或多位傳輸錯(cuò)誤,
    發(fā)表于 01-21 21:02

    轉(zhuǎn):循環(huán)冗余校驗(yàn)CRC)算法入門(mén)引導(dǎo)

    寫(xiě)給嵌入式程序員的循環(huán)冗余校驗(yàn)CRC)算法入門(mén)引導(dǎo)前言CRC校驗(yàn)
    發(fā)表于 08-01 18:32

    循環(huán)冗余校驗(yàn)CRC)算法入門(mén)引導(dǎo)

    循環(huán)冗余校驗(yàn)CRC)算法入門(mén)引導(dǎo)
    發(fā)表于 08-17 12:40

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

    循環(huán)冗余校驗(yàn)(CRC)是一種可靠性很高的串行數(shù)據(jù)校驗(yàn)方法。介紹循環(huán)
    發(fā)表于 04-16 14:19 ?16次下載

    循環(huán)冗余校驗(yàn)在SOPC中的自定義指令實(shí)現(xiàn)

    NIOS II 軟核處理器是Altera 公司一款靈活高效的嵌入式處理器,常應(yīng)用于控制和通信領(lǐng)域。循環(huán)冗余校驗(yàn)CRC)廣泛應(yīng)用于各種數(shù)據(jù)校驗(yàn)
    發(fā)表于 07-07 14:06 ?21次下載

    SOPC中自定義外設(shè)和自定義指令性能分析

    SOPC中自定義外設(shè)和自定義指令性能分析 NiosII是一個(gè)建立在FPGA上的嵌入式軟核處理器,靈活性很強(qiáng)。作為體現(xiàn)NiosII靈活性精髓的兩個(gè)最主要方面,自
    發(fā)表于 03-29 15:12 ?1601次閱讀
    SOPC中<b class='flag-5'>自定義</b>外設(shè)和<b class='flag-5'>自定義</b><b class='flag-5'>指令</b>性能分析

    循環(huán)冗余校驗(yàn)碼---CRC

    循環(huán)冗余校驗(yàn)碼---CRC碼   二進(jìn)制信息位串沿一條信號(hào)線(xiàn)逐位在部件之間或計(jì)算機(jī)之間傳送稱(chēng)為串行傳送。CRC(Cyclic Redund
    發(fā)表于 10-13 16:52 ?7158次閱讀
    <b class='flag-5'>循環(huán)</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗(yàn)</b>碼---<b class='flag-5'>CRC</b>碼

    基于FPGA循環(huán)冗余校驗(yàn)實(shí)驗(yàn)系統(tǒng)

    文章首先分析了循環(huán)冗余校驗(yàn)碼的功能,在此基礎(chǔ)上提出了基于FPGA實(shí)現(xiàn)方法,詳細(xì)闡述了CRC
    發(fā)表于 03-26 13:52 ?1757次閱讀
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>循環(huán)</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗(yàn)</b>實(shí)驗(yàn)系統(tǒng)

    STM32L4循環(huán)冗余校驗(yàn)模塊(CRC)介紹

    STM32L4循環(huán)冗余校驗(yàn)模塊(CRC)介紹 有興趣的可以參考下
    發(fā)表于 12-25 10:38 ?27次下載

    crc循環(huán)冗余校驗(yàn)碼算法

     循環(huán)冗余校驗(yàn)(Cyclic Redundancy Check, CRC)是一種根據(jù)網(wǎng)絡(luò)數(shù)據(jù)包或電腦文件等數(shù)據(jù)產(chǎn)生簡(jiǎn)短固定位數(shù)校驗(yàn)碼的一種散
    發(fā)表于 12-04 10:11 ?2.3w次閱讀
    <b class='flag-5'>crc</b><b class='flag-5'>循環(huán)</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗(yàn)</b>碼算法

    如何通過(guò)LUA實(shí)現(xiàn)自定義串口指令設(shè)置

    本章節(jié)主要講述通過(guò) LUA 實(shí)現(xiàn)自定義串口指令設(shè)置按鈕按下、設(shè)置文本、設(shè)置蜂鳴器響。并在按下按鈕或通過(guò)鍵盤(pán)輸入數(shù)據(jù)后發(fā)送自定義指令。本文將分
    發(fā)表于 10-17 08:00 ?8次下載
    如何通過(guò)LUA<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>自定義</b>串口<b class='flag-5'>指令</b>設(shè)置

    使用FPGA實(shí)現(xiàn)循環(huán)冗余校驗(yàn)CRC編碼器的設(shè)計(jì)資料說(shuō)明

    介紹了循環(huán)冗余校驗(yàn)CRC)編碼器的設(shè)計(jì)及FPGA實(shí)現(xiàn)過(guò)程,采用原理圖輸入法對(duì)整個(gè)系統(tǒng)進(jìn)行了編譯
    發(fā)表于 02-05 17:00 ?19次下載
    使用<b class='flag-5'>FPGA</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>循環(huán)</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗(yàn)</b><b class='flag-5'>CRC</b>編碼器的設(shè)計(jì)資料說(shuō)明

    CRC循環(huán)冗余校驗(yàn)簡(jiǎn)介

    CRC 是Cyclic Redundancy Check的縮寫(xiě),循環(huán)冗余校驗(yàn),用于校驗(yàn)數(shù)據(jù)傳輸?shù)耐暾浴R话闱闆r下在數(shù)據(jù)發(fā)送前計(jì)算
    的頭像 發(fā)表于 04-24 13:04 ?6816次閱讀
    <b class='flag-5'>CRC</b><b class='flag-5'>循環(huán)</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗(yàn)</b>簡(jiǎn)介

    32位可編程循環(huán)冗余校驗(yàn)(CRC)

    電子發(fā)燒友網(wǎng)站提供《32位可編程循環(huán)冗余校驗(yàn)(CRC).pdf》資料免費(fèi)下載
    發(fā)表于 09-25 11:22 ?0次下載
    32位可編程<b class='flag-5'>循環(huán)</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗(yàn)</b>(<b class='flag-5'>CRC</b>)

    CRC循環(huán)冗余校驗(yàn))應(yīng)用舉例

    CRC循環(huán)冗余校驗(yàn))應(yīng)用舉例
    的頭像 發(fā)表于 05-16 16:12 ?1043次閱讀