女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

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

FPGA技術(shù)驛站 ? 來源:Lauren的FPGA ? 作者:Lauren的FPGA ? 2021-02-02 17:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

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

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

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

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

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

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

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

原文標(biāo)題:在C代碼中插入寄存器

文章出處:【微信公眾號:Lauren的FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責(zé)任編輯:haq

聲明:本文內(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

    文章

    5433

    瀏覽量

    124396
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

    141593
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70672

原文標(biāo)題:在C代碼中插入寄存器

文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    使用寄存器點亮LED燈

    學(xué)習(xí)本章時,配合以上芯片手冊的“19. I/O Ports”章節(jié)一起閱讀,效果會更佳,特別是涉及到寄存器說明的部分。本章內(nèi)容涉及到較多寄存器方面的深入內(nèi)容,對于初學(xué)者而言這些內(nèi)容豐富也較難理解,但非常有必要細讀研究、夯實基礎(chǔ)。
    的頭像 發(fā)表于 05-28 17:37 ?615次閱讀
    使用<b class='flag-5'>寄存器</b>點亮LED燈

    如何用C語言操作寄存器——瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南(10)

    由于寄存器的數(shù)量是非常之多的,如果每個寄存器都用像*((uint32_t*)(0x40080000+0x0020*1))這樣的方式去訪問的話,會顯得很繁瑣、很麻煩。為了更方便地訪問寄存器,我們會借助
    的頭像 發(fā)表于 04-22 15:30 ?966次閱讀
    如何用<b class='flag-5'>C</b>語言操作<b class='flag-5'>寄存器</b>——瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南(10)

    24l01寄存器列表指南免費下載

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

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

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

    XILINX FPGA CLB單元之移位寄存器

    一、移位寄存器 SLICEM函數(shù)發(fā)生也可以配置為32位移位寄存器,而無需使用slice可用的觸發(fā)。以這種方式使用,每個LUT可以將串行
    的頭像 發(fā)表于 01-16 17:45 ?793次閱讀
    XILINX FPGA CLB單元之移位<b class='flag-5'>寄存器</b>

    ADS1299如何在寄存器配置右腿驅(qū)動?

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

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

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

    接口的控制與狀態(tài)寄存器什么作用

    的行為并獲取硬件的狀態(tài)信息。 接口的控制與狀態(tài)寄存器的作用 在現(xiàn)代計算機系統(tǒng),硬件設(shè)備與軟件之間的交互是通過一系列的接口來實現(xiàn)的。這些接口不僅需要能夠傳輸數(shù)據(jù),還需要能夠控制硬件設(shè)備的行為并監(jiān)控其狀態(tài)。接口的控制與狀態(tài)寄存器
    的頭像 發(fā)表于 10-17 10:42 ?1520次閱讀

    寄存器間接尋址和寄存器尋址的區(qū)別

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

    微處理寄存器的作用

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

    通用寄存器是什么意思

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

    寄存器的類型和作用

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

    寄存器的輸入輸出方式

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

    寄存器故障分析

    寄存器故障分析是計算機硬件維護與系統(tǒng)穩(wěn)定性保障的重要環(huán)節(jié)。寄存器作為計算機的關(guān)鍵組成部分,負責(zé)存儲和傳輸數(shù)據(jù),其穩(wěn)定性和可靠性直接影響到整個計算機系統(tǒng)的性能。以下是對
    的頭像 發(fā)表于 08-29 11:26 ?2167次閱讀

    寄存器是什么意思?寄存器是如何構(gòu)成的?

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