国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

使用函數表示組合邏輯的方法

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2022-12-21 09:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

數字門級電路可分為兩大類:組合邏輯和時序邏輯。鎖存器是組合邏輯和時序邏輯的一個交叉點,在后面會作為單獨的主題處理。

組合邏輯描述了門級電路,其中邏輯塊的輸出直接反映到該塊的輸入值的組合,例如,雙輸入AND門的輸出是兩個輸入的邏輯與。如果輸入值發生變化,輸出值將反映這一變化,組合邏輯的RTL模型需要反映這種門級行為,這意味著邏輯塊的輸出必須始終反映該邏輯塊當前輸入值的組合。

SystemVerilog有三種在可綜合RTL級別表示組合邏輯的方法:連續賦值語句、always程序塊和函數。接下來幾篇文章將探討每種編碼風格,并推薦最佳實踐編碼風格。

425b3fb4-80cc-11ed-8abf-dac502259ad0.png

使用函數表示組合邏輯

當編碼正確時,函數的行為和綜合就像組合邏輯一樣。

最佳實踐指南7-7
將RTL模型中使用的函數聲明為自動automatic。

為了表示組合邏輯行為,每次調用函數時都必須計算一個新的函數返回值。如果調用了靜態函數,但沒有指定返回值,則靜態函數將隱式返回其上一次調用的值。這是鎖存邏輯的行為,而不是組合邏輯。通過將RTL模型中使用的所有函數聲明為自動函數(automatic),可以避免這種編碼錯誤。

例7-2定義了一個使用Russian Peasant Multiplication算法(一系列加法和移位運算)計算乘法運算的函數。該函數被定義在一個包中,任何模塊都可以使用該乘法器算法。

SystemVerilog會推斷出一個與函數名稱和數據類型相同的變量,示例7-2中的代碼就是利用了這一點。函數名multiply_f被用作臨時變量來保存for循環中的中間計算結果,函數名中存儲的最終值在函數退出時成為函數返回值。

圖7-2顯示了綜合該函數的結果,以及從連續賦值語句調用該函數的模塊。

示例7-2:定義乘法運算的算法函數

//`begin_keywords"1800-2012"http://useSystemVerilog-2012keywords
packagedefinitions_pkg;
timeunit1ns;timeprecision1ns;

//RussianPeasantMultiplicationAlgorithm
functionautomatic[7:0]multiply_f([7:0]a,b);
multiply_f=0;
for(inti=0;i<=3;?i++)?begin?
??????if?(b?==?0)?continue;?//?all?done,?finish?looping
??????else?begin?
?????????if?(b?&?1)?multiply_f?+=?a;
?????????a?<<=?1;??//?multiply?by?2
?????????b?>>=1;//divideby2
end
end
endfunction
endpackage:definitions_pkg
//`end_keywords

//`begin_keywords"1800-2012"http://useSystemVerilog-2012keywords
modulealgorithmic_multiplier
importdefinitions_pkg::*;
(inputlogic[3:0]a,b,
outputlogic[7:0]result
);
timeunit1ns;timeprecision1ns;

assignresult=multiply_f(a,b);

endmodule:algorithmic_multiplier
//`end_keywords
圖7-2:示例7-2的綜合結果:作為組合邏輯的函數

42abd94c-80cc-11ed-8abf-dac502259ad0.png

最佳實踐指南7-8
在可能的情況下,使用SystemVerilog運算符,如*,而不是使用循環和其他編程語句。

算法乘法器的示例7-2還說明了為什么在乘法和除法等復雜運算中最好使用SystemVerilog運算符。如果在示例7-2中使用了乘法運算符(*),則綜合編譯器可以將該運算符映射到ASICFPGA的最有效的乘法器。

設計工程師在使用算術運算符或算法來表示復雜操作時需要謹慎。RTL模型不是在具有大量內存資源的通用計算機上運行的軟件程序。RTL模型是門級實現的抽象。所表示的功能需要在物理上適合目標ASIC或FPGA,并且在時間上在有限的數量或時鐘周期內。之前的文章有詳細介紹了在RTL模型中使用算術運算符(如乘法和除法)的指導原則。

審核編輯:郭婷

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

    關注

    8

    文章

    956

    瀏覽量

    44909
  • 組合邏輯
    +關注

    關注

    0

    文章

    48

    瀏覽量

    10375
  • and
    and
    +關注

    關注

    0

    文章

    36

    瀏覽量

    7742

原文標題:使用函數表示組合邏輯

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    函數指針介紹

    ; 取地址運算符 不是必需的,因為一個函數標識符就表示了它的地址,如果是函數調用,還必須包含一個圓括號括起來的參數表。 調用函數指針的方式也
    發表于 01-21 08:11

    函數指針及指針函數的區別

    = fun(a);   注意指針函數函數指針表示方法的不同,千萬不要混淆。最簡單的辨別方式就是看函數名前面的指針*號有沒有被括號()包含
    發表于 12-12 06:34

    結構體聲明與定義

    int year;//入學年份,用無符號整數表示 unsigned int years;//學制,用無符號整數表示 }; int main(void) { /** *在main函數中聲明結構體
    發表于 12-11 07:52

    檢查函數返回值的錯誤和異常處理方法

    檢查函數返回值:這是最常見也最基本的錯誤處理和異常處理方法,就是在調用一個函數后,檢查其返回值是否符合預期或是否表示出錯或失敗。如果出錯或失敗,則根據返回值或者全局變量errno(定義
    發表于 12-11 06:48

    定點數表示實數的方法以及定點數在硬件上的運算驗證

    本篇主要介紹定點數表示實數的方法以及定點數在硬件上的運算驗證 為什么選定點數 32位單精度浮點數: 32位的單精度浮點數為例,IEE754標準規定,一個flaot類型的浮點數X可以
    發表于 10-28 08:13

    電壓放大器驅動的混凝土組合結構界面損傷高靈敏檢測方法研究

    鋼-混組合結構無損檢測技術,可用于指導MASW方法的實際工程應用。 測試設備: ATA-2041高壓放大器、采集卡、示波器、任意函數波形發生器。 實驗過程: 圖:MASW試驗檢測系統 搭建MASW檢測系統,MASW檢測系統的硬件
    的頭像 發表于 08-05 11:42 ?715次閱讀
    電壓放大器驅動的混凝土<b class='flag-5'>組合</b>結構界面損傷高靈敏檢測<b class='flag-5'>方法</b>研究

    C語言中的內聯函數與宏

    在C編程中,內聯函數和宏都用于避免函數調用的開銷并編寫可復用的邏輯部分,但它們在工作方式和安全性方面存在顯著差異。
    的頭像 發表于 07-25 15:10 ?1904次閱讀
    C語言中的內聯<b class='flag-5'>函數</b>與宏

    深入理解C語言:函數—編程中的“積木塊”藝術

    在編程的世界里,函數就像建筑中的“積木塊”——它們是構建復雜程序的基石。通過靈活組合這些模塊,開發者能打造出功能強大且結構清晰的代碼。函數之所以成為C語言的核心,正是因為它解決了編程中的三大關
    的頭像 發表于 06-30 17:26 ?1858次閱讀
    深入理解C語言:<b class='flag-5'>函數</b>—編程中的“積木塊”藝術

    WP4000變頻功率分析儀的精度表示與常規儀表精度表示方法有什么不同?

    WP4000變頻功率分析儀的精度表示與常規儀表精度表示方法有什么不同呢? 一 相對誤差與引用誤差的概念 相對誤差是指測量所造成的絕對誤差與被測量真值之比,一般以百分數表示。 由于被測量
    的頭像 發表于 05-13 09:58 ?650次閱讀

    用電設備功率因數表

    用電設備功率因數表
    發表于 04-01 16:25 ?0次下載

    數字電路—22、時序邏輯電路

    時序電路的邏輯功能可用邏輯表達式、狀態表、卡諾圖、狀態圖、時序圖和邏輯圖6種方式表示,這些表示方法
    發表于 03-26 15:03

    數字電路—6、邏輯函數表示方法

    發表于 03-25 10:26

    迅為RK3568開發板篇Openharmony配置HDF控制UART-實操-HDF驅動配置UART-UART應用開發-UART驅動API接口介紹

    ,返回值為負數表示 UART 設置設備屬性失敗。 (5) UartGetAttribute 設置 UART 的設備屬性后,可以通過獲取設備屬性接口來查看 UART 當前的設備屬性。函數原型如下所示
    發表于 03-24 11:19

    解鎖TSMaster fifo函數:報文讀取的高效方法

    前言:TSMaster目前有兩種讀取報文的模式:回調函數模式和fifo模式。fifo函數是TSMaster近期新增的函數,本文將重點介紹fifo模塊。關于回調函數的使用
    的頭像 發表于 03-14 20:04 ?1141次閱讀
    解鎖TSMaster fifo<b class='flag-5'>函數</b>:報文讀取的高效<b class='flag-5'>方法</b>

    迅為RK3568開發板篇Openharmony配置HDF控制UART-實操-HDF驅動配置UART-UART應用開發-UART驅動API接口介紹

    屬性成功,返回值為負數表示 UART 設置設備屬性失敗。 (5) UartGetAttribute 設置 UART 的設備屬性后,可以通過獲取設備屬性接口來查看 UART 當前的設備屬性。函數原型如下
    發表于 03-11 10:27