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

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

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

3天內不再提示

如何在C代碼中插入寄存器?

FPGA技術驛站 ? 來源:Lauren的FPGA ? 作者:Lauren的FPGA ? 2021-02-02 17:07 ? 次閱讀

對于邏輯級數較高的路徑,常用的方法之一是在其中插入流水寄存器,將路徑打斷,從而降低邏輯延遲,這在HDL代碼中實現起來比較容易。此外,從RTL代碼風格角度講,對于關鍵模塊,設計時常將其輸入/輸出端口寄存。這起到了隔離關鍵路徑的作用。

但是,如果使用的RTL代碼是HLS轉換生成的,例如使用Vitis HLS綜合的,其可讀性較差,想要在其生成的HDL代碼中插入寄存器就變得比較困難。為此,我們想到了能否在C代碼中插入寄存器,并保證Vitis HLS綜合后的結果是寄存器。

這要解決四個問題:一是這樣的C代碼要具備一定的可復用性,比如,以模板函數的形式呈現。二是這樣的C代碼是參數化的,尤其是數據類型,因為需要寄存的數據其數據類型不盡相同。這仍然可以借助模板函數實現。三是保證這個函數不被優化合并掉。因為這個函數功能比較單一,輸出等于輸入,這就要用到INLINE的功能。四是C語言是不具備時序特征的,要實現輸出與輸入的延遲,就要借助相應的pragma,我們想到了Latency。

在此基礎上,我們構造了下面的C++代碼。不難看出,這是一個模板函數,數據類型是參數化的,使用了三個pragma。其中PIPELINE用于限定II為1,LATENCY用于限定延遲為1,INLINE用于防止該函數被合并。

66d4998e-5fc8-11eb-8b86-12bb97331649.png

看一個具體的使用案例,如下圖所示代碼。功能很簡單,就是實現兩個數的相加。這里對兩個輸入數據a和b分別做了寄存,同時對結果c也做了寄存。最終的綜合報告顯示Latency為2,和我們預期的一致。對于生成的HDL代碼,將其添加到Vivado中進行綜合,綜合后的結果也是符合預期的。

6a37c740-5fc8-11eb-8b86-12bb97331649.png

6dcf1afc-5fc8-11eb-8b86-12bb97331649.png

這里,我們對比一下三種情形。情形1:不添加流水寄存器;情形2:僅對輸出添加流水寄存器;情形3:輸入輸出均添加流水寄存器。Vitis HLS綜合結果以及其生成的HDL代碼在Vivado下的綜合結果對比如下圖所示。首先,可以看到Latency符合預期,同時II始終為1;其次,Vivado下綜合后的資源利用率與Vitis HLS的結果是不一致的。這一點也很容易理解,因為Vivado綜合時會有很多優化。

6e165a70-5fc8-11eb-8b86-12bb97331649.png

進一步,我們看到這里的延遲為1,如果需要兩級延遲,就要兩次調用模板函數。能否將延遲的時鐘周期也設置成參數呢?答案是肯定的,如下圖代碼所示。這里定義了L,用來管理延遲的時鐘周期個數,對應pragma Latency的min和max值。

6e600c38-5fc8-11eb-8b86-12bb97331649.png

6f7ac52c-5fc8-11eb-8b86-12bb97331649.png

原文標題:在C代碼中插入寄存器

文章出處:【微信公眾號:Lauren的FPGA】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

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

    關注

    31

    文章

    5363

    瀏覽量

    121089
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137629
  • 代碼
    +關注

    關注

    30

    文章

    4823

    瀏覽量

    68991

原文標題:在C代碼中插入寄存器

文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STC15系列常用寄存器匯總免費下載

      寄存器的功能是存儲二進制代碼,它是由具有存儲功能的觸發組合起來構成的。一個觸發可以存儲1位二進制代碼,故存放n位二進制
    發表于 01-22 17:24 ?7次下載

    ADS1299如何在寄存器配置右腿驅動?

    我的連接 如圖,想問如何在寄存器配置右腿驅動,是將CONF3配置成EC,BIAS SENSP和BIAS SENSN配置成EE嗎?還是說別的寄存器的配置?
    發表于 11-19 07:53

    PCM5142如何在FPGA通過SPI配置寄存器

    工作正常)。左右通道均沒有輸出;(xsmt/mode1已拉高) 2、如何在FPGA通過SPI配置寄存器,文檔只有page0 R1,并沒有具體寄存
    發表于 10-31 07:29

    寄存器間接尋址和寄存器尋址的區別

    寄存器間接尋址和寄存器尋址是計算機體系結構兩種重要的尋址方式,它們在指令執行過程起著關鍵作用。下面將從定義、原理、特點、應用場景以及區別等方面對這兩種尋址方式進行詳細闡述。
    的頭像 發表于 10-05 17:13 ?2082次閱讀

    微處理寄存器的作用

    微處理寄存器是計算機體系結構的核心組成部分,它們扮演著至關重要的角色。寄存器是一種高速的存儲單元,用于暫時存儲數據、指令和地址等信息
    的頭像 發表于 10-05 15:07 ?689次閱讀

    通用寄存器是什么意思

    在計算機體系結構,通用寄存器是中央處理(CPU)內部最為核心和基礎的組成部分之一。它們被設計為能夠存儲和傳輸各種類型的數據和指令,是CPU進行數據處理和運算的關鍵工具。通用寄存器
    的頭像 發表于 09-05 14:13 ?1196次閱讀

    寄存器的類型和作用

    在計算機科學寄存器(Register)是一種高速存儲單元,它位于CPU內部,與CPU的運算單元和邏輯控制單元緊密相連。寄存器的主要作用是暫時存儲指令、操作數和地址等臨時數據,以便CPU快速訪問和處理。由于
    的頭像 發表于 09-05 14:11 ?2516次閱讀

    寄存器的輸入輸出方式

    寄存器的輸入輸出方式是數字電路設計至關重要的部分,它決定了數據如何在寄存器中進出以及處理的效率。下面將詳細探討寄存器的幾種主要輸入輸出方式
    的頭像 發表于 09-05 14:09 ?1591次閱讀

    寄存器故障分析

    寄存器故障分析是計算機硬件維護與系統穩定性保障的重要環節。寄存器作為計算機的關鍵組成部分,負責存儲和傳輸數據,其穩定性和可靠性直接影響到整個計算機系統的性能。以下是對
    的頭像 發表于 08-29 11:26 ?1266次閱讀

    寄存器是什么意思?寄存器是如何構成的?

    在計算機科學寄存器(Register)是一個高速存儲單元,它位于中央處理(CPU)內部,用于存儲計算機程序執行過程中所需要的數據、指令地址或狀態信息。寄存器是計算機體系結構
    的頭像 發表于 08-02 18:23 ?4806次閱讀
    <b class='flag-5'>寄存器</b>是什么意思?<b class='flag-5'>寄存器</b>是如何構成的?

    寄存器尋址和直接尋址的區別

    寄存器尋址和直接尋址是計算機指令系統的兩種基本尋址方式。它們在指令的執行過程起著至關重要的作用,決定了指令操作數的來源和目標。下面我們將介紹這兩種尋址方式的特點、區別以及在實際應用
    的頭像 發表于 07-12 10:42 ?2370次閱讀

    寄存器尋址的實現方式

    在計算機體系結構寄存器尋址是一種常見的尋址方式,它允許程序直接訪問CPU內部的寄存器寄存器尋址可以提高程序的執行效率,因為它避免了對內存的訪問。
    的頭像 發表于 07-12 10:36 ?819次閱讀

    寄存器分為基本寄存器和什么兩種

    寄存器是計算機中用于存儲數據的高速存儲單元,它們是CPU內部的重要組成部分。寄存器可以分為基本寄存器和擴展寄存器兩種類型。 一、基本寄存器
    的頭像 發表于 07-12 10:31 ?1611次閱讀

    如何根據自己設計寄存器配置總線定義來生成一套寄存器配置模版

    無論是FPGA還是ASIC,系統設計總會存在配置寄存器總線的使用,我們會將各種功能、調試寄存器掛載在寄存器總線上使用。
    的頭像 發表于 03-04 13:56 ?1239次閱讀
    如何根據自己設計<b class='flag-5'>中</b>的<b class='flag-5'>寄存器</b>配置總線定義來生成一套<b class='flag-5'>寄存器</b>配置模版

    CPU的6個主要寄存器

    CPU寄存器是中央處理內的組成部分,是有限存貯容量的高速存貯部件。寄存器是CPU內部的元件,包括通用寄存器、專用寄存器和控制
    的頭像 發表于 02-03 15:15 ?4740次閱讀
    主站蜘蛛池模板: 最新合集丨新片速递 | 综综综综合网 | 二级黄绝大片中国免费视频0 | 国产精品成人一区二区 | а8天堂资源在线官网 | 天天草天天干 | 超级香蕉97视频在线观看一区 | 福利视频一区二区 | 特级毛片永久久免费观看 | 九九99久久精品午夜剧场免费 | 国产美女一区 | 午夜宅男视频 | 色老头久久网 | 欧美三级大片在线观看 | 精品一区二区国语对白 | 色视频在线免费看 | 操操操操操 | 久久国产乱子伦精品免费看 | 野外啪啪抽搐一进一出 | 久久久久久国产精品mv | 日本免费a级片 | 午夜影视啪啪免费体验区入口 | 免费的色网站 | 亚洲第一成人影院 | 国产特级毛片 | 伊人网视频 | 国产麻豆成人传媒免费观看 | 久久精品视频网站 | 亚洲高清色图 | 68日本 xxxxxxxxx| 老司机成人精品视频lsj | 亚洲码欧美码一区二区三区 | 日本国产高清色www视频在线 | 色姑娘天天干 | 永久免费观看黄网站 | 在线观看视频一区 | 亚洲午夜精品久久久久久成年 | 精品一区二区三区在线视频 | 三级完整在线观看高清视频 | 亚洲精品成人a | 激情理论 |