欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

數(shù)字前端生存指南—RTL

冬至子 ? 來源:無用技術(shù)研究所 ? 作者:無用技術(shù)研究所 ? 2023-12-04 10:14 ? 次閱讀

1.為什么是RTL

在數(shù)字前端領(lǐng)域,RTL幾乎與“設(shè)計代碼”概念相同。RTL的英文全稱為Register Transfer Level,中文一般翻譯為寄存器傳輸級,原本是HDL建模的一種層次。以Verilog HDL為例,其建模層次包括系統(tǒng)級、算法級、RTL級、門級和開關(guān)級,其中:

*系統(tǒng)級和算法級:描述層次較高,較多的忽略細節(jié)時序,設(shè)計精度低,但開發(fā)容易,設(shè)計難度低
*門級和開關(guān)級:描述層次較低,設(shè)計難度很大,但設(shè)計精細度很高
*RTL級:設(shè)計難度和設(shè)計精度的trade off,同時也是EDA工具能較好處理的最高層級

這里舉出一個乘加器的RTL例子,代碼如下所示:

reg [7:0] a_reg;
reg [7:0] b_reg;
reg [15:0] mul_reg;
reg [15:0] c_reg;
reg [16:0] result_reg;




always @ (posedge clk)
    mul_reg <= a_reg * b_reg;


always @ (posedge clk)
    result_reg <= c_reg + mul_reg;

這段代碼中涉及5個寄存器,以及寄存器之間的關(guān)系,例如mul_reg就等于a_reg和b_reg的乘積,RTL級的描述就是以寄存器為基點(例如a_reg、b_reg、mul_reg),描述寄存器之間的關(guān)系(例如mul_reg=a_reg*b_reg)的建模層次。

2.RTL拆解

2.1.R(Reg)

RTL首先為R,即寄存器,在RTL級中的寄存器為一種理想寄存器,其具有以下幾種特征:

*存儲:寄存器具有存儲特性,在不復(fù)位和賦值的情況下會一直保持當前的值
*延遲:由于寄存器是邊沿敏感器件,僅能在時鐘上升沿(一般不使用下降沿)可以被賦值,因此輸入的數(shù)據(jù)延遲一個cycle才能在輸出上體現(xiàn)
*時鐘:寄存器具有時鐘輸入端口,賦值的條件時時鐘邊沿+復(fù)位無效+有效信號(若有)
*復(fù)位:寄存器可以具有同步或異步復(fù)位端口,也可以沒有復(fù)位端口,復(fù)位是優(yōu)先級最高的賦值端口,會將寄存器輸出變?yōu)閺?fù)位值,且異步復(fù)位是立即有效的

對于Reg,可以分為以下幾種類型:

*存儲:用于保存當前的值供下次調(diào)用,使用了寄存器的存儲特性,為了滿足功能要求添加,在更上層的建模中可見
*打拍:用于打斷組合邏輯路徑,為了滿足時序要求添加,刪除后(匹配控制路徑)對功能無影響,在更上層的建模中不可見
*狀態(tài):用于保存狀態(tài),以自身狀態(tài)為下一狀態(tài)的輸入,常見為狀態(tài)機、隱式狀態(tài)機和計數(shù)器幾種,是一條控制路徑或子控制類路徑的起點

根據(jù)Reg處于數(shù)據(jù)路徑還是控制路徑,常見的形態(tài)如下表所示:

1.jpg

可以使用下面的例子展示,這里的例子是一個以累加器結(jié)尾的流水線,上方是控制路徑,下方是數(shù)據(jù)路徑??刂坡窂降钠瘘c是分類為狀態(tài)的寄存器,形式為狀態(tài)機,后續(xù)逐級對狀態(tài)信息打拍,這里的目的是為了匹配流水線的延遲,因此分類為打拍,最后將狀態(tài)存儲供后續(xù)使用,是為了功能添加,因此分類為存儲。數(shù)據(jù)路徑為流水線,添加流水線的目的是提高運行速率,為了匹配時序目標,因此第一、第二、第三級流水線的分類均為打拍,而最后一級寄存器是累加寄存器,添加的目的是為了保持數(shù)據(jù),滿足累加的功能要求,因此分類為存儲:

圖片

最后,根據(jù)不同類型的寄存器,設(shè)計時需要考慮的問題都相對固定,首先分析寄存器是否有必要存在和基本的形式,分析的角度如下所示:

*狀態(tài)寄存器:當前設(shè)計是集中式控制還是分布式控制,若為集中式控制,狀態(tài)寄存器是否需要移動到控制模塊中;若為分布式控制,狀態(tài)寄存器的形態(tài)為計數(shù)器還是顯式狀態(tài)機。
*打拍寄存器:邏輯路徑是否過長,若過長,則添加在哪個點既能合理的分割邏輯路徑,又能使用較少bit的寄存器
*存儲寄存器:存儲的訪問方式,容量需求如何,是否需要靈活同時讀寫,是否可以用memory代替

隨后對于寄存器,有一些基本的設(shè)計要素,是每個寄存器都要考慮的,包括:

*工作在哪個時鐘域下,和輸入寄存器之間是否存在跨時鐘域的關(guān)系
*是否需要異步和同步復(fù)位信號,若需要,位于哪個復(fù)位域(和其他哪些寄存器能一起復(fù)位)
*是否需要用前清零和用后清零
*什么是否需要對其進行刷新,刷新是否需要有效信號(是否考慮自動門控)

對其復(fù)位、自動門控和復(fù)位的處理如下表所示,其中是否添加異步/同步復(fù)位和自動門控優(yōu)先級主要與位置有關(guān),復(fù)位處理主要與分類有關(guān):

1.jpg

2.2.T(Transfer)

Transfer用于描述組合邏輯,即寄存器之間的連接關(guān)系,必須依附于寄存器(或端口)存在。Transfer可以用函數(shù)表示,描述其依附的Reg的值如何進行更新。以一個累加器為例,其代碼如下所示:

input [7:0] din;
input din_vld;
reg [7:0] dout;
wire dout_transfer;


assign dout_transfer = dout + din;


always @ (posedge clk or negedge rst_b) begin
    if(~rst_b) begin
        dout <= 8'b0;
    end else if(din_vld) begin
        dout <= dout_transfer;
    end
end

其中dout是數(shù)據(jù)路徑上的存儲寄存器,對應(yīng)的transfer的函數(shù)表達式如下所示:

圖片

Transfer又可以分為兩類,分別是有狀態(tài)和無狀態(tài):

*有狀態(tài)Transfer:其依附的寄存器的值作為transfor的輸入,如上面的例子就是一個有狀態(tài)的Transfor,一般來說,有狀態(tài)的Transfor只會依附在狀態(tài)寄存器、存儲寄存器(累運算)上
*無狀態(tài)Transfor:其依附的寄存器的值和transfor的輸入無關(guān),一般依附在打拍寄存器和一部分存儲寄存器(純存儲)上

這兩種類型的Transfer的例子如下圖所示:

圖片

和Reg不同,Transfer的功能和基本實現(xiàn)模式由設(shè)計人員通過RTL代碼描述,而具體而細節(jié)的實現(xiàn)方式一般由綜合器確定(也可以由設(shè)計人員手工指定),綜合器主要會對Transfer進行優(yōu)化,Transfer對應(yīng)的變量可能在綜合后被重命名,按原有名稱在網(wǎng)表中可能無法找到。

2.3.L(Level)

Level就是層級,這里對R和T做一個總結(jié),以R(和Port)為節(jié)點,以T為邊,可以構(gòu)建一個有向、有環(huán)、帶自環(huán)邊的圖,如下圖所示:

圖片

圖中的節(jié)點分為寄存器、端口和常數(shù)值(一般忽略),而邊分為控制線和數(shù)據(jù)線,控制線負責(zé)管理刷新時刻,而數(shù)據(jù)線負責(zé)生成刷新值。按另一種說法,如果將一個寄存器的功能用一個或多個不包括分支的函數(shù)表示,則函數(shù)中的輸入值就都是數(shù)據(jù)線,其他信號就是控制線,

RTL代碼實質(zhì)就是描述一張圖的關(guān)系,如下一段代碼:

input din_vld
reg cnt_en;reg [7:0] cnt;output dout_vld;
always @ (posedge clk or negedge rst_b) begin if(~rst_b) begin cnt_en <= 1'b0; end else if(cnt == 8'd200) begin cnt_en <= 1'b0; // 數(shù)據(jù)線f(x) = 0 end else if(din_vld) begin cnt_en <= 1'b1; // 數(shù)據(jù)線f(x) = 1 end
always @ (posedge clk or negedge rst_b) begin if(~rst_b) begin cnt <= 8'b0; end else if(din_vld) begin // 控制線 cnt <= 8'b0; // 數(shù)據(jù)線f(x) = 0 end else if(cnt_en) begin cnt <= cnt + 1'b1; // 數(shù)據(jù)線f(x) = cnt + 1 end
assign dout_vld = (cnt > 8'd128); // 數(shù)據(jù)線f(x) = 0 和 f(x) = 1


這段代碼描述了一個計數(shù)器生成控制信號的過程,可以轉(zhuǎn)換為如下所示的圖。其中紅線為控制線,黑線為數(shù)據(jù)線,忽略了常數(shù)值:

圖片

3.RTL和Reg/Wire的關(guān)系

RTL中的Reg和Transfer與Verilog中常用的Reg和Wire的關(guān)系是一個老生常談的話題,這里直接給出結(jié)論:

*Verilog中的Reg類型可以建模RTL中的Reg(時序邏輯)和Transfer(組合邏輯),但RTL中的Reg只能用Verilog中的Reg類型建模
*Verilog中的Wire類型只能用來建模RTL中的Transfer(組合邏輯),但RTL中的Transfer(組合邏輯)既可以用Verilog中的Wire類型建模,也可以用Verilog中的Reg類型建模

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

    關(guān)注

    31

    文章

    5372

    瀏覽量

    121311
  • EDA工具
    +關(guān)注

    關(guān)注

    4

    文章

    268

    瀏覽量

    31958
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    385

    瀏覽量

    59991
  • 狀態(tài)機
    +關(guān)注

    關(guān)注

    2

    文章

    492

    瀏覽量

    27680
  • 乘加器
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    6054
收藏 人收藏

    評論

    相關(guān)推薦

    數(shù)字前端生存指南—PPA

    PPA是數(shù)字IC設(shè)計逃不開的概念,分別是P(Performance)、P(Power)和A(Area),分別代表芯片的性能、功耗和面積。
    的頭像 發(fā)表于 12-04 10:09 ?3911次閱讀
    <b class='flag-5'>數(shù)字前端</b><b class='flag-5'>生存</b><b class='flag-5'>指南</b>—PPA

    棄子爭先”與“田忌賽馬”:中國數(shù)字前端EDA如何加速發(fā)展

    數(shù)字前端EDA如何通過守正創(chuàng)新、實現(xiàn)加速發(fā)展進行了分享。 ? ? “以我們自己的進展來看,在芯華章專注的數(shù)字前端EDA領(lǐng)域,卡脖子的手還放在這里,但是已經(jīng)卡不死了?!闭劶皣a(chǎn)EDA發(fā)展“卡脖子”問題,已經(jīng)扎根行業(yè)幾十年的傅勇這樣
    發(fā)表于 04-18 14:13 ?654次閱讀
    棄子爭先”與“田忌賽馬”:中國<b class='flag-5'>數(shù)字前端</b>EDA如何加速發(fā)展

    IC數(shù)字前端設(shè)計實戰(zhàn)案例系列pdf

    ,等等,這都是一個系統(tǒng)的基礎(chǔ),將來涉及到的工作,不一定都涉及到,但是上述的你必定會碰到其中的一個或幾個,IC前端設(shè)計說難不難,但是需要一定知識的積累的,因為數(shù)字基本都是面向系統(tǒng)的,一個系統(tǒng)級的思維是必不可少的,IC數(shù)字前端設(shè)計實
    發(fā)表于 12-14 16:18

    尋找數(shù)字前端設(shè)計的講師

    我這邊想做一個數(shù)字前端設(shè)計與DC綜合的培訓(xùn),又沒喲路哪位有些比較好的講師可以給我推薦一下。
    發(fā)表于 06-07 18:20

    [招聘] 新思科技(Synopsys)上海/西安招聘數(shù)字前端AC

    大家好! 這邊是Synopsys HR, Maggie, 我們在上海/西安招聘數(shù)字前端的AC工程師, 具體職位描述如下,有意向的朋友,歡迎發(fā)送簡歷到[url=][email protected]
    發(fā)表于 03-03 09:49

    基于閉環(huán)系統(tǒng)辨識的數(shù)字前饋控制

    基于閉環(huán)系統(tǒng)辨識的數(shù)字前饋控制.ppt
    發(fā)表于 10-04 10:57

    小白入門數(shù)字前端,求大神指教需要學(xué)什么知識以及用哪些軟件

    本帖最后由 無名兵卒 于 2018-3-22 15:24 編輯 事情是這樣的,我目前在念研一,我們組里需要做數(shù)字的但又沒有做數(shù)字的,所以老師想讓我轉(zhuǎn)到數(shù)字前端,可我是啥都不懂啊,望看到這個帖子
    發(fā)表于 03-22 15:21

    JESD204B生存指南

    JESD204B生存指南
    發(fā)表于 05-28 12:08

    如何去實現(xiàn)一種數(shù)字前端的設(shè)計?包括哪些步驟?

    什么是數(shù)字前端數(shù)字前端主要包括哪些?什么是數(shù)字后端?數(shù)字后端主要包括哪些?數(shù)字前端設(shè)計的一般流程包括哪些步驟?如何對
    發(fā)表于 06-18 07:53

    數(shù)字IC前端和后端有何區(qū)別

    數(shù)字IC就是傳遞、加工、處理數(shù)字信號的IC,是近年來應(yīng)用最廣、發(fā)展最快的IC品種,可分為通用數(shù)字IC和專用數(shù)字IC。數(shù)字前端以設(shè)計架構(gòu)為起點
    發(fā)表于 07-28 08:27

    針對TD-SCDMA標準的數(shù)字前端解決方案

    針對TD-SCDMA標準的數(shù)字前端解決方案:中國第三代自行開發(fā)的時分同步碼分多址(TD-SCDMA)峰窩標準是兩種廣為接受的3GPP時分復(fù)用峰窩標準之一,另一種為TD-CDMA。TDSCDMA標準與TD-CDMA的
    發(fā)表于 08-22 17:58 ?22次下載

    適合中國3G TD-SCDMA標準的數(shù)字前端解決方案

    摘要:本文的重點基于FPGA的成本經(jīng)濟的TD-SCDMA數(shù)字前端(DFE)解決方案。波束成形需要在基站使用多個天線(通常為六至八個天線)。在下行鏈路,一個小區(qū)中的每個載波在經(jīng)過適當?shù)南?/div>
    發(fā)表于 06-15 17:00 ?535次閱讀

    軟件無線電中的數(shù)字前端

    摘要:介紹了軟件無線電和數(shù)字前端,論述了數(shù)字前端實現(xiàn)的問題。 關(guān)鍵詞:軟件無線電;數(shù)字前端;射頻;基帶
    發(fā)表于 02-28 15:51 ?64次下載
    軟件無線電中的<b class='flag-5'>數(shù)字前端</b>

    基于閉環(huán)系統(tǒng)辨識的數(shù)字前饋控制

    基于閉環(huán)系統(tǒng)辨識的數(shù)字前饋控制
    發(fā)表于 10-26 09:28 ?0次下載

    數(shù)字IC前端后端的區(qū)別,數(shù)字IC設(shè)計流程與設(shè)計工具

    數(shù)字IC就是傳遞、加工、處理數(shù)字信號的IC,是近年來應(yīng)用最廣、發(fā)展最快的IC品種,可分為通用數(shù)字IC和專用數(shù)字IC。數(shù)字前端以設(shè)計架構(gòu)為起點
    發(fā)表于 11-06 16:51 ?26次下載
    <b class='flag-5'>數(shù)字</b>IC<b class='flag-5'>前端</b>后端的區(qū)別,<b class='flag-5'>數(shù)字</b>IC設(shè)計流程與設(shè)計工具