1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          Verilog數字系統基礎設計-擾碼與解擾

          來源:互聯網轉載 時間:2024-01-29 08:31:10

          Verilog數字系統基礎設計-擾碼與解擾

          擾碼可以對原始的用戶數據進行擾亂,得到隨機化的用戶數據。發送電路在發送數據前先對數據進行隨機擾亂,接收電路使用相同的擾亂算法重新恢復出原始的數據。

          什么是擾碼與解擾

          擾碼器使用LFSR實現,用來產生偽隨機比特序列,它和串行輸入的數據進行異或,從而實現對輸入數據的隨機化。正如我們在LFSR部分討論過的,偽隨機序列也是周期重復的,其周期長度取決于LFSR中觸發器的級數和所選擇的多項式。接收電路本地有一個和發送電路中相同的偽隨機序列產生器,它產生的數據與接收數據進行異或,可以恢復出發端原始的串行數據。

          這里用到了一個邏輯運算表達式:如果A^B=C,那么C^B=A,此處A為原始數據,B為擾碼器的輸出,C為擾碼后的數據。如圖6.4所示。

          擾碼的作用

          擾碼有以下兩個作用:

          (1)擾碼可以使重復的數據圖案的頻譜被展寬。例如,在數據流中重復出現序列10101010,這會導致高頻離散頻譜的出現從而產生較強的EMI(電磁干擾)。當進行擾碼后,該數據被隨機化,EMI噪聲會大大減弱。

          (2)擾碼的另一用處是減少并行線路中的串擾。擾碼可以使功率譜分布更為平滑和均勻,從而降低高頻串擾。

          串行擾碼器

          結合LFSR及其給出的多項式可以方便地設計串行擾碼器。對于串行擾碼器,一個時鐘周期只有1比特的用戶數據到達,每個時鐘上升沿之后輸出一位經過擾碼后的數據,同時LFSR內部觸發器的值被更新。然而,很多時候在一個時鐘周期內到達多個比特的數據,此時我們需要設計并行擾碼器,它可以在一個時鐘周期內輸入和輸出多位數據。

          并行擾碼器

          對并行數據加擾,遵循和串行加擾同樣的算法。以每個時鐘周期到達8位并行數據為例,LFSR偽隨機序列產生器需要在每個時鐘周期內產生8位隨機數,同時擾碼器在每個時鐘周期內產生8位擾碼后的隨機數據。我們可以假定有一個8倍于當前并行數據工作時鐘的虛擬時鐘,在8個虛擬時鐘周期之后,LFSR偽隨機序列產生器可以產生8位數據(注意,LFSR偽隨機序列產生器的輸出與當前輸入數據是無關的,與寄存器的當前狀態有關),這8位數據與輸入的8位原始數據進行異或,就可以得到并行擾碼的最終結果。在后面的部分中,我們將對PCIe專用擾碼器的實現進行討論。并行擾碼技術同樣適用于16比特或32比特的并行數據。

          擾碼電路設計要點

          我們討論了如何對串行數據及并行數據進行加擾處理,然而,為了實現擾碼電路,還需要注意以下三個要點。

          (1)擾碼器初始化

          發送電路和接收電路必須可以獨立地對擾碼器和解擾器進行初始化,否則二者就不能實現同步,從而接收電路也無法恢復出原始數據。PCIe中使用了一個名為COM的字符,發送電路和接收電路都可以識別該字符,并在收到該字符后將電路中的擾碼器置為預先約定的相同的初始始值。這些COM字符被周期性地發送,使得收發雙方能夠同步或者對LFSR進行周期性的初始化。

          (2)擾碼器暫停

          正常工作時,LFSR內部觸發器的值在每個時鐘周期都會進行更新,然而,LFSR應該可以被暫停更新。例如,在PCIe中,數據流中會添加或刪除SKIP字符,并且SKIP字符的數量在中間處理過程中還可能發生變化。無論是發送電路還是接收電路,SKIP字符都是不需要進行擾碼和解擾處理的,因此擾碼電路和解擾電路應該可以在這些字符出現時進入“暫?!睜顟B,“跳過”對它們的處理。

          (3)擾碼器去使能

          擾碼器還應該可以工作在LFSR內部寄存器不斷更新,但不產生有效輸出的狀態。例如,在PCIe中,訓練字符(TS1/TS2)未被加擾,但LFSR內部仍能不斷更新。

          PCIe擾碼電路

          PCIe擾碼器(如圖6.5所示)是一個16位LFSR多項式如下:

          ce{G(x)=x^16 + x^5 + x^4 + x^3 + 1}

          ,它有16個LFSR觸發器,圖6.5是其具體電路;

          • COM字符將LFSR初始化為16’hFFFF;
          • SKP字符可以令其工作暫停。

          PCIe擾碼器工作波形如圖6.6所示。

          Verilog RTL-PCIe擾碼器

          // 每時鐘周期處理8比特并行數據

          module scrambler_8bits  (clk,  rstb,  data_in,  k_in,  disab_scram,  data_out,  k_out);//****************************************************************input clk;input rstb;input [7:0]data_in; // input data to be scrambledinput k_in; // when 1, the input is a control character.// when 0, the data is regular datainput disab_scram; // when 1 scrambling is disabled ,output [7:0] data_out; // scrambled data outputoutput k_out; // when 1 the output is a control character.//****************************************************************localparam LFSR INIT = 16‘hFFFF;reg  [15:0] lfsr, lfsr_nxt;wire [15:0] lfsr_int;wire initialize_scrambler, pause_scrambler;reg  [7:0] data_out, data_out_nxt;wire [7:0] data_out_int;/* First find the equations for the LFSR flops. Since there are 8 bits of data coming input, the LFSR flops value moves 8 times (as there is an imaginary clock running 8 times faster). Find the intermediate value. Refer to PCIe sepe for the following algorithm */assign lfsr_int[0]  = lfsr[8];assign lfsr_int[l]  = lfsr[9];assign Ifsr_int[2]  = lfsr[10];assign lfsr_int[3]  = lfsr[8] ^ lfsr[ll];assign lfsr_int[4]  = lfsr[8] ^ lfsr[9]  ^ lfsr[12];assign lfsr_int[51  = lfsr[8] ^ lfsr[9]  ^ lfer[10] ^ lfsr[13];assign lfsr_int[6]  = lfsr|9] ^ lfsr[10] ^ lfsr[l1] ^ lfsr[14];assign lfsr_int[7]  = lfsr[10]^ lfsr[ll] ^ lfsr[12] ^ lfsr[15];assign lfsr_inr[8]  = lfsr[0] ^ lfsr[l1] ^ lfsr[12] ^ lfsr[13];assign lfsr_int[9]  = lfsr[l] ^ lfsr[12] ^ lfsr[13] ^ lfsr|14];assign lfsr_int[10] = lfsr|2] ^ lfsr|13] ^ lfsr[14] ^ lfsr[15];assign lfsr_int[l1] = lfsr[3] ^ lfsr[l4] ^ lfsr[15];assign lfsr_int[l2] = lfsr[4] ^  lfsr[15];assign lfsr_int[13] = lfsr[5];assign lfsr_int[14] = lfsr[6];assign lfsr_int[15] = lfsr[7];// now use the special handles to define lfsr_nxt[15:0]//****************************************************************assign initialize_scrambler = (data_in == 8'hBC) && (k_in == 1); //COM charassign pause_scrambler = (data_in == 8'h1C) && (k_in == 1) // SKP charalways @(*)    begin        lfsr_nxt = lfsr;    if (disab_scram | pause_scrambler )        lfsr_nxt = lfsr;    else if (initialize_scrambler)        lfsr_nxt = LFSR_INIT;    else        lfsr_nxt = lfsr_int;    end            // flop inference    always @(posedge clk or negedge rstb)    begin      if(!rstb)        lfsr <= LFSR_INIT;       else        lfsr <= lfsr_nxt;    end// Now we need to perform the XOR operation with the input data_in to derive// scrambled data First derive data_outjnt[7:0]//****************************************************************assign data_out_int[0] = data_in[0] ^ lfsr[l5];assign data_out_int[1] = data_in[1] ^ lfsr[l4];assign data_out_int[2] = data_in[2] ^ lfsr[13];assign data_out_int[3] = data_in[3] ^ lfsr[12];assign data_out_int[4] = data_in[4] ^ lfsr[l1];assign data_out_int[5] = data_in[5] ^ lfsr[l0];assign data_out_int[6| = data_in[6] ^ lfsr[9];assign data_out_int[7] = data_in[7] ^ lfsr[8];always @(*)begin  data_out_nxt = data_out_int;    if (disab_scram || k_in) // scrambling disabled or input control character        data_out_nxt = data_in;  else        data_out_nxt = data_out_int;end// flop inference//****************************************************************always @(posedge clk or negedge rstb)begin  if(!rstb)      data_out <= 'd0;  else      data_out <= data_out_nxt;endendmodule

          學習Xilinx FPGA最好的資料其實就是官方手冊,下表總結了部分手冊的主要介紹內容,關注我,持續更新中......

          標簽:解擾-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          成都到巴中在什么汽車站坐?五桂橋、成都汽車總站和北門汽車站。也可以選擇坐火車,從成都東站乘坐復興號動車組到巴中,安全舒適。成都到巴中在什么汽車站坐?從成都到巴中,在成都汽車東站和北門站坐車,從成都汽車東站出發。票價150元左右,從北門站出發,票價118元左右。c782次列車途經站點?C782次動車組城際列車是成都東站到巴中站。C782次列車早上6: 30成都東始發,當天上午10: 56到達巴中站。...

          PS如何給照片換發型?換造型在PS里面算是一個中等難度的你操作了,要完全掌握的東西也少的,要想能做到這個效果,必須你要有兩張圖片,一個肯定是你要換發型的人物,還必須兩張你要換的發型的圖片,利用蒙版,調色的一些方法參與水配,這個要看圖片,相同的圖片方法也是一樣的,而且要注重任務的角度,這是一個很靈話的工作,沒有什么固定設置的方法,而要看你要想做的圖是怎樣的。ps如何直接挪動頭發?ps是可以就挪動身體...

          蘋果7手機微信不提示有什么辦法?微信顯然收到了新消息,但往往沒有提示。因為這經常被女朋友批評?明明網絡狀態好,怎么能不提示呢?看看下面的方法,它們可能會幫助你解決問題。如果您在設置中關閉微信提示通知,微信只會在角落里顯示新消息的數量,在屏幕鎖定的情況下不允許提示。輸入:1。設置-通知-微信;2。打開所有通知選項允許微信通知后,進入微信,設置微信提示信息。輸入:[1。微信-I-設置-新消息提醒2。打...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>