《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 其他 > 入門:數字硬件建模SystemVerilog篇OpenFPGA介紹

入門:數字硬件建模SystemVerilog篇OpenFPGA介紹

2022-10-25
來源:OpenFPGA
關鍵詞: RTL編程 編譯器

  數字硬件建模SystemVerilog-程序塊 (procedural blocks)

  經過幾周的更新,SV核心部分用戶自定義類型和包內容已更新完畢,接下來就是RTL編程語句。

 0114.JPG

1158.JPG

  程序塊是編程語句的容器。程序塊的主要目的是控制何時應執行編程語句,例如每當時鐘上升沿出現時,或每當信號或總線改變值時。SystemVerilog有兩種主要類型的程序塊: iniTIal 程序塊和always 程序塊。

  iniTIal 程序是一種驗證結構;綜合編譯器不支持。但是有一個例外是,綜合編譯器支持使用readmemh系統任務加載內存塊或分配給特定內存地址的 iniTIal 程序。FPGA綜合器可能還允許使用 iniTIal 程序對設備通電狀態進行建模,本文不討論或使用 initial 程序,因為它們不用于對RTL功能進行建模。

  過程是無限循環。它們執行編程語句,完成后自動重新開始。一般的概念是,當電源打開時,硬件在做一些連續的事情。這種連續行為是使用always 程序建模的。

  SystemVerilog有四種類型的always 程序:使用關鍵字always的通用過程和使用關鍵字always_ff, always_comb 和 always_latch的專用always 過程。

  always 程序塊可用于多種類型建模,包括可綜合RTL模型、抽象行為模型(如不會綜合的RAM)以及驗證代碼(如時鐘振蕩器或連續響應檢查器)。雖然通用always程序的靈活性使其在各種建模和驗證項目中都很有用,但同樣的靈活性意味著軟件工具不知道always的預期用途是什么,什么時候用于可綜合的RTL模型。為了將RTL模型準確地轉換為ASIC或FPGA設備,綜合器對通用always程序設置了許多編碼限制。

  專用的RTL程序。Always_ff、always_comb和always_latch專用always程序塊的行為與通用always程序塊相同,但會施加綜合所需的特殊編碼限制。這些額外的限制有助于確保RTL仿真的行為與實際ASIC或FPGA的門級行為相匹配。正如這些專用程序的名稱所表明的,Always_ff對仿真觸發器等時序邏輯器件施加了某些綜合限制。Always_comb為建模組合邏輯(如解碼器)施加了某些綜合限制,always_latch為建模鎖存行為施加了某些綜合限制。后面會詳細說明每個過程塊功能及驗證。

  敏感列表

  always 程序告訴仿真,應該“always”評估被建模的功能(一個無限循環),但仿真和綜合都需要了解更多信息,以便準確地建模硬件行為。這些工具還需要知道何時執行程序塊中的語句。對于RTL建模,時間要么在表示時序邏輯的時鐘邊沿上,要么在表示組合邏輯或鎖存邏輯的過程更改值所使用的任何信號上。

  為了控制在可綜合RTL模型中何時執行編程語句,程序是以敏感列表開始,敏感列表是一個信號列表,值的變化將觸發程序的執行。通用always和RTL特定always_ff程序要求RTL設計工程師明確規定靈敏度列表。RTL特定的always_comb和always_latch程序將推斷出一個隱式靈敏度列表。

  顯式指定的敏感度列表與@標記一起引入,口頭上稱為“at”。在可綜合RTL建模中,靈敏度列表包含一個或多個網絡或變量名的列表。名稱可以用逗號(,)或關鍵字“or”分隔。

  以下兩個明確的敏感度列表功能相同:

113.JPG

  在敏感度列表的上下文中,or關鍵字只是一個分隔符:它不是or操作。逗號與關鍵字or的使用取決于用戶的偏好。一種風格在功能上并不優于另一種風格。

  靈敏度列表還可以指定標量(l位)信號的特定邊沿,該邊沿將觸發always 程序。邊沿由關鍵詞posedge和negedge指定,邊沿靈敏度對于基于時鐘的功能非常重要:

  always @(posedge elk or negedge rstN)…

  posedge關鍵字是“正邊沿”的縮寫,negedge是“負邊沿”的縮寫。正邊沿是任何可能被硅晶體管感知為正向過渡的過渡。因此,posedge將在0-to-1、0-to-z、0-to-x、z-to-1、x-to-l、z-to-x和x-to-z轉換時觸發,相反,negedge將在1-to-0、1-to-z、1-to-x、z-to-0、x-to-0、z-to-x和x-to-z轉換時觸發。

  時序邏輯靈敏度。時序邏輯元件,如觸發器,在時鐘邊沿觸發,通常是該時鐘的上升沿。(一些ASIC和FPGA設備具有在時鐘下降沿觸發的組件,很少有在時鐘兩側觸發的組件。)為了指示always 程序代表時鐘觸發的時序邏輯行為,always或always_ff關鍵字后跟:

  @ (posedge  或者 @(negedge  )

  例如:

  always_ff @(posedge clk) q <= d; //時序邏輯觸發器

  一些時序元件具有異步輸入,例如set或reset控制。這些異步信號也會影響仿真或綜合時評估always程序的運行時間,因此也應該包括在靈敏度列表中。

  后面章節更詳細地討論了時序邏輯的建模,包括同步和異步set、enable控制,以及正確使用通用always和專用always_ff程序塊的指南。

  組合邏輯靈敏度。組合邏輯(如加法器或解碼器)的輸出反映了該邏輯塊當前輸入值的組合。因此,每當組合邏輯的任何輸入值改變時(即敏感度列表),就需要重新評估組合邏輯中的編程語句。為了仿真這種行為,always關鍵字后面是一個明確的敏感度列表,其中包括該邏輯塊讀取的所有信號,其形式為:

  @(,…)

  例如:

  always @(a, b) sum = a + b;

  always_comb專用always程序的一個特點是,它自動推斷出一個合適的組合邏輯靈敏度列表。上述加法器代碼使用always_comb建模為:

  always_comb @(a, b) sum = a + b;

  后面章節將更詳細地討論組合邏輯建模,以及always和always_comb程序塊的正確使用指南。

  latch邏輯靈敏度。鎖存是組合邏輯塊的一種形式,可以存儲其當前狀態,建模鎖存行為遵循與建模組合邏輯行為相同的敏感度列表規則。Always_latch關鍵字后面是一個靈敏度列表,其中包括該邏輯塊讀取的所有信號,格式為:

  @(,…)

  如下所示:

112.JPG

    后續章節將更詳細地討論了鎖存邏輯的建模,包括使用always和always_latch程序塊的最佳實踐編碼指南。

  不可綜合的敏感度列表。從語法上講,靈敏度列表可以包含操作,例如@(a+b)或iff保護條件,posedge和negedge限定符也可以用于大于1位寬的向量,但只使用向量的最低有效位(最右邊的位),向量中其他位的更改不會觸發敏感度列表,RTL綜合編譯器通常不支持操作:iff和向量邊沿(posedge和negedge)。

  begin-end語句組

  所有形式的程序塊都可以包含一條語句或一組語句。語句組包含在關鍵字begin和end之間,可以包含任意數量的語句,包括none語句。下面的代碼片段顯示了一個包含單個語句的always 程序和一個包含begin end組的always 程序。

111.JPG

  一條語句可以嵌套在另一條語句中,如:

2222.JPG

  在前面的代碼段中,外部語句是always 程序中的單個語句,因此不需要begin-end語句組。

  可以使用以下語法命名begin-end語句組:

  begin:

  命名語句組可以包含局部變量聲明,局部變量可以在語句組內使用,但不能在可綜合RTL模型的組外引用,(SystemVerilog的更高版本增加了在未命名的begin端組中聲明局部變量的功能,但在編寫本文時,大多數綜合編譯器都不支持這種功能。)

  也可以選擇命名組的匹配端。命名語句組的結尾可以幫助直觀地匹配嵌套的語句組。SystemVerilog要求用于開始和結束的名稱必須完全匹配。

  局部變量的使用有助于確保在某些情況下得到適當的綜合結果。在時序always程序中計算并由另一個程序使用的臨時中間變量可能在仿真中起作用,但可能綜合出與RTL仿真行為不匹配的門級功能,在過程中聲明局部變量將防止此編碼錯誤-無法從過程外部訪問局部變量,

  下面的示例聲明了一個臨時變量,該變量位于always_ff 過程的局部。臨時變量用于計算中間結果,然后用于計算最終結果(本例中的計算特意保持簡單,以便專注于局部變量的聲明,而不是一些可能需要中間計算的復雜算法)

1111.JPG

  請注意,冒號前后允許有空白,如上面的begin后面所示。但是,end后面不能有空白,如上圖所示。使用空格有助于使復雜的代碼更易于閱讀。

  在程序塊中使用變量和網絡

  程序賦值的左側只能是變量類型,包括基于變量的用戶自定義類型。在運算符或賦值語句更新之前,變量仍然保持其先前的值,變量的這種特性會影響仿真和綜合。

  在下面的代碼段中,sum必須聲明為變量類型,因為它位于過程賦值的左側。有關RTL建模中可使用的可綜合變量類型的討論,請參見之前的文章。

捕獲.JPG

  只有程序賦值的左側必須是變量。賦值的右側可以使用變量、網絡、參數或文字值。



更多信息可以來這里獲取==>>電子技術應用-AET<< 

mmexport1621241704608.jpg

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲福利视频二区| 欧美亚洲自偷自偷| 亚洲一卡久久| 在线视频欧美一区| 亚洲精品在线视频观看| 亚洲国产va精品久久久不卡综合| 国产一区视频观看| 国产日韩欧美在线一区| 国产精品中文在线| 国产欧美另类| 韩国三级电影久久久久久| 国产一区二区精品| 国产亚洲精品成人av久久ww| 国产精品网站在线播放| 国产精品入口麻豆原神| 国产精品午夜av在线| 国产精品区一区| 国产精品稀缺呦系列在线| 国产美女精品一区二区三区| 国产精品色网| 国产日韩欧美一区| 国模吧视频一区| 亚洲国产cao| 亚洲精品视频免费观看| 日韩视频中文| 亚洲色诱最新| 午夜精品一区二区三区在线| 欧美一区二区私人影院日本| 久久精品99国产精品日本| 亚洲国产色一区| 亚洲理伦电影| 亚洲性线免费观看视频成熟| 亚洲在线视频免费观看| 欧美一区二区精品久久911| 久久久国产一区二区| 美女黄色成人网| 欧美日韩视频在线| 国产精品日本欧美一区二区三区| 国产亚洲精品福利| 亚洲高清免费视频| 艳妇臀荡乳欲伦亚洲一区| 亚洲午夜在线视频| 欧美在线免费一级片| 亚洲精品免费在线播放| 亚洲午夜激情| 久久精品在线观看| 欧美精品激情blacked18| 国产精品久久久久久久第一福利| 国产亚洲精品久| 亚洲激情国产| 亚洲夜晚福利在线观看| 久久精品成人一区二区三区蜜臀 | 亚洲黄页一区| 亚洲一区三区视频在线观看| 久久精品夜色噜噜亚洲aⅴ| 欧美成人国产va精品日本一级| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 欧美日韩亚洲一区二区三区在线| 国产精品午夜久久| 在线欧美三区| 亚洲伊人网站| 亚洲美女色禁图| 久久av一区二区三区| 欧美激情五月| 国产欧美一区二区精品性| 91久久极品少妇xxxxⅹ软件| 亚洲一区二区三区免费观看| 亚洲韩国日本中文字幕| 午夜久久久久久| 欧美极品aⅴ影院| 国产亚洲一区二区三区| 亚洲精选大片| 亚洲黄色一区| 性伦欧美刺激片在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整 | 国产色视频一区| 日韩视频免费观看| 久久精品国产清高在天天线| 亚洲无线一线二线三线区别av| 老司机久久99久久精品播放免费| 欧美四级电影网站| 亚洲电影在线观看| 午夜欧美不卡精品aaaaa| 一区二区三区四区五区视频| 麻豆精品国产91久久久久久| 国产精品看片资源| 亚洲精品女av网站| 亚洲福利在线观看| 久久国产精品黑丝| 国产精品久久久久久久第一福利 | 日韩视频免费在线| 亚洲电影中文字幕| 欧美在线视频播放| 国产精品免费看久久久香蕉| 91久久精品国产91性色| 久久精品国产一区二区三区免费看 | 国产精品国产三级国产aⅴ9色| 91久久一区二区| 亚洲福利视频一区| 久久久久国产精品人| 国产精品私人影院| 一区二区日韩欧美| 一本色道**综合亚洲精品蜜桃冫 | 欧美 日韩 国产在线| 国产性天天综合网| 亚洲欧美卡通另类91av| 亚洲欧美www| 欧美少妇一区二区| 亚洲乱码久久| 99精品国产一区二区青青牛奶| 美女网站久久| 在线电影国产精品| 亚洲黄色精品| 免费在线看一区| 亚洲国产精品精华液网站| 亚洲高清资源| 久热精品在线| 在线成人av网站| 亚洲欧洲免费视频| 蜜桃av一区二区三区| 在线免费观看日本一区| 亚洲高清电影| 乱中年女人伦av一区二区| 精久久久久久久久久久| 亚洲国产精品99久久久久久久久| 久久一综合视频| 精品99一区二区三区| 亚洲国产一区二区三区高清| 麻豆成人av| 亚洲国产裸拍裸体视频在线观看乱了中文 | 激情欧美亚洲| 亚洲片在线资源| 欧美激情国产高清| 亚洲精品在线观看免费| 一本在线高清不卡dvd | 国产精品久久久久久久电影| 亚洲网站在线播放| 欧美一区二区三区免费观看 | 亚洲精品小视频| 一区二区三区四区精品| 国产精品免费一区二区三区观看| 亚洲午夜免费福利视频| 西西人体一区二区| 国语自产在线不卡| 91久久国产精品91久久性色| 欧美激情一区二区三区| 亚洲理论电影网| 亚洲欧美激情一区| 国产一区二区三区在线播放免费观看 | 日韩一区二区电影网| 午夜精品一区二区三区在线视| 国产亚洲精久久久久久| 亚洲国产婷婷综合在线精品| 欧美人与禽猛交乱配视频| 在线综合亚洲| 久久久精品一区二区三区| 亚洲国产视频一区| 亚洲与欧洲av电影| 狠狠久久综合婷婷不卡| 99re这里只有精品6| 欧美性做爰毛片| 久久精品女人| 欧美日韩国产综合网| 午夜精品久久久久久久久久久| 老司机67194精品线观看| 亚洲精品综合精品自拍| 欧美一站二站| 91久久精品美女| 羞羞色国产精品| 亚洲高清久久久| 性欧美8khd高清极品| 亚洲第一狼人社区| 午夜精品影院| 亚洲国产综合在线| 欧美一区二区三区在线观看视频| 亚洲高清不卡av| 香蕉av777xxx色综合一区| 在线观看一区二区视频| 亚洲综合欧美| 亚洲国产婷婷香蕉久久久久久99| 亚洲自拍偷拍网址| 亚洲第一精品夜夜躁人人爽 | 欧美大片在线观看| 亚洲伊人久久综合| 欧美精品18| 久久精品国产成人| 国产精品成人在线| 亚洲精品久久嫩草网站秘色 | 久久精品国产免费看久久精品 | 日韩亚洲精品电影| 久久久久久久999精品视频| 99精品久久| 欧美国产高潮xxxx1819| 午夜影视日本亚洲欧洲精品| 欧美精品一区二区三区蜜臀| 欧美自拍丝袜亚洲| 国产精品久久久一本精品| 亚洲欧洲日韩综合二区| 国产日韩欧美三级| 亚洲一区在线免费|