在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

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

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

1.為什么是RTL

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

*系統(tǒng)級和算法級:描述層次較高,較多的忽略細節(jié)時序,設計精度低,但開發(fā)容易,設計難度低
*門級和開關級:描述層次較低,設計難度很大,但設計精細度很高
*RTL級:設計難度和設計精度的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個寄存器,以及寄存器之間的關系,例如mul_reg就等于a_reg和b_reg的乘積,RTL級的描述就是以寄存器為基點(例如a_regb_regmul_reg),描述寄存器之間的關系(例如mul_reg=a_reg*b_reg)的建模層次。

2.RTL拆解

2.1.R(Reg)

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

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

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

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

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

1.jpg

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

圖片

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

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

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

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

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

1.jpg

2.2.T(Transfer)

Transfer用于描述組合邏輯,即寄存器之間的連接關系,必須依附于寄存器(或端口)存在。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ù)路徑上的存儲寄存器,對應的transfer的函數(shù)表達式如下所示:

圖片

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

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

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

圖片

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

2.3.L(Level)

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

圖片

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

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

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ù)器生成控制信號的過程,可以轉換為如下所示的圖。其中紅線為控制線,黑線為數(shù)據(jù)線,忽略了常數(shù)值:

圖片

3.RTL和Reg/Wire的關系

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

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

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

    關注

    31

    文章

    5425

    瀏覽量

    123572
  • EDA工具
    +關注

    關注

    4

    文章

    272

    瀏覽量

    32652
  • RTL
    RTL
    +關注

    關注

    1

    文章

    388

    瀏覽量

    60743
  • 狀態(tài)機
    +關注

    關注

    2

    文章

    493

    瀏覽量

    28099
  • 乘加器
    +關注

    關注

    0

    文章

    4

    瀏覽量

    6120
收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

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

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

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

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

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

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

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

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

    JESD204B生存指南

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

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

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

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

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

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

    針對TD-SCDMA標準的數(shù)字前端解決方案:中國第三代自行開發(fā)的時分同步碼分多址(TD-SCDMA)峰窩標準是兩種廣為接受的3GPP時分復用峰窩標準之一,另一種為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 ?557次閱讀

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

    摘要:介紹了軟件無線電和數(shù)字前端,論述了數(shù)字前端實現(xià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ù)字IC就是傳遞、加工、處理數(shù)字信號的IC,是近年來應用最廣、發(fā)展最快的IC品種,可分為通用數(shù)字IC和專用數(shù)字IC。數(shù)字前端以設計架構為起點
    發(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設計流程與設計工具

    Gvim工具在數(shù)字前端開發(fā)中扮演的角色和重要的意義

    手中的一支智能筆。在數(shù)字前端開發(fā)中,工程師要編寫RTL(寄存器傳輸級)代碼,這就好比是在創(chuàng)作一篇特殊的文章。Gvim提供了一個書寫的平臺,讓工程師能夠輸入、修改和組織代碼內(nèi)容。 它類似于傳統(tǒng)的紙質(zhì)筆記本,但功能強大得多。在這個“筆記本”里,工程師可以精
    的頭像 發(fā)表于 02-20 10:21 ?363次閱讀

    ADI ADRV9040 具有數(shù)字前端DFE、400MHz iBW射頻收發(fā)器的8T8R SoC

    ADI ADRV9040 具有數(shù)字前端DFE、400MHz iBW射頻收發(fā)器的8T8R SoC
    的頭像 發(fā)表于 03-19 18:32 ?909次閱讀
    主站蜘蛛池模板: 久久网站免费观看 | 三级欧美视频 | 狠狠干亚洲色图 | 手机在线看片国产日韩生活片 | 色五月丁香五月综合五月 | 国产毛片农村妇女aa板 | 天天摸夜夜摸夜夜狠狠摸 | 你懂的手机在线 | 性色欧美xo影院 | 国产精品秒播无毒不卡 | 性色影院 | 一级毛片美国一级j毛片不卡 | 国产精品午夜国产小视频 | 人人添人人澡人人澡人人人爽 | 成人精品视频一区二区三区 | 国产片在线观看狂喷潮bt天堂 | 亚洲成在人线影视天堂网 | 美女被网站免费看九色视频 | 人人艹在线视频 | 天堂电影免费在线资源 | 孩交啪啪网址 | 色综合97天天综合网 | 色综合久久久久久久久五月 | 日本成片视频 | 久久性久久性久久久爽 | 国产拍拍| 色网站观看 | 天天操bb| 午夜刺激爽爽视频免费观看 | 日本视频不卡 | 成人亚洲网站 | 优优色综合 | 又粗又硬又爽又黄毛片 | 日本aaaaa特黄毛片 | 成人看的午夜免费毛片 | 久久亚洲综合色 | 亚洲精品色图 | 一级一片免费视频播放 | 添人人躁日日躁夜夜躁夜夜揉 | 午夜手机福利视频 | 可以看黄色的网站 |