FPGA基礎 -- Verilog行為級建模之時序控制

Verilog 行為級建模(Behavioral Modeling)中“時序控制”機制的系統化由淺入深培訓內容,適用于初學者到進階 FPGA 設計工程師的學習路徑。


🎯 一、行為級建模的定位

行為級建模(Behavioral Modeling)是 Verilog 中最高抽象層次的建模風格,強調 “做什么”而不是“怎么做”,常用于:

  • 快速原型
  • 高效仿真
  • 邏輯功能建模
  • 高層模塊驗證(非綜合路徑)

在綜合設計中,只要遵循綜合友好寫法,行為級建模同樣可用于綜合,例如用于狀態機、流水線控制邏輯等。


?? 二、時序控制的三種主流語法機制

行為級建模中的時序控制定義了語句何時執行,是理解 RTL 精髓的關鍵。

1. 阻塞式賦值 = 與 非阻塞賦值 <=

類型用途執行順序應用場景
=阻塞賦值順序執行組合邏輯建模
<=非阻塞賦值并發調度寄存器建模(時序)

? 最佳實踐:

  • 時序邏輯中使用 <=
  • 組合邏輯中使用 =

2. 時間控制語句

? (1) #delay(模擬延遲,仿真專用
#5 a = b;  // 表示延遲5個時間單位后執行

說明:不能綜合,只用于仿真分析電路行為。

? (2) 事件控制(@
@(posedge clk) a <= b;    // 上升沿觸發
@(negedge rstn) ...       // 下降沿觸發
@(*)                      // 任意輸入變化觸發(組合邏輯)

? 用于建模同步觸發邏輯、異步復位、組合邏輯敏感列表等。

? (3) 等待語句 wait(expr)
wait(en == 1) data <= value;

延遲直到 en == 1 為真再執行下一語句(仿真有效,綜合一般不支持


🔁 三、綜合友好的時序控制結構范式

1. 寄存器建模結構(同步時序邏輯)

always @(posedge clk or negedge rstn) beginif (!rstn)q <= 0;elseq <= d;
end

2. 狀態機建模結構

// 狀態寄存器
always @(posedge clk or negedge rstn)if (!rstn)state <= IDLE;elsestate <= next_state;// 狀態轉移邏輯
always @(*) begincase (state)IDLE:    next_state = start ? WORK : IDLE;WORK:    next_state = done  ? IDLE : WORK;...endcase
end

行為建模在狀態轉移中非常常見,next_state 是組合邏輯,state 是同步更新。


🎓 四、從行為到結構的優化思維

設計時,我們可以先用行為建模快速驗證邏輯功能,然后再結構化、管線化、時序優化

行為建模RTL建模優化
使用 @ 表達邊沿敏感拆分為多個 always 塊
描述控制流,如 if/wait/case分離數據路徑與控制路徑
寫測試驅動器后續替換為時序精確 RTL 驅動器

📐 五、典型設計例子:握手時序控制(行為描述)

always @(posedge clk or negedge rstn) beginif (!rstn)valid <= 0;else if (ready && data_valid)valid <= 1;else if (done)valid <= 0;
end

這是一個典型的行為級“握手有效窗口”控制邏輯,之后可以重構為:

  • FSM 控制 valid 輸出周期
  • 插入 pipeline 優化 setup/hold
  • 添加 timing constraint 保證時序收斂

🛠? 六、行為建模時序控制的調試建議

問題可能原因調試建議
仿真波形延遲/不一致阻塞/非阻塞混用導致模擬差異=,<=使用要區分清楚
wait() 無效或卡死條件長期不成立$display 打印條件變量狀態
@(*) 造成毛刺沒列出所有敏感變量顯式列出組合邏輯敏感變量

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/84513.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/84513.shtml
英文地址,請注明出處:http://en.pswp.cn/web/84513.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

設計模式精講 Day 7:橋接模式(Bridge Pattern)

【設計模式精講 Day 7】橋接模式&#xff08;Bridge Pattern&#xff09; 文章簡述 在軟件系統中&#xff0c;類的繼承關系往往會導致類爆炸&#xff0c;尤其是在需要組合多種功能或行為時。橋接模式&#xff08;Bridge Pattern&#xff09;通過將抽象部分與其實現部分分離&am…

Apipost 簽約銳捷網絡:AI賦能,共推 ICT 領域 API 生態智能化升級

日前&#xff0c;北京北極狐信息科技有限公司&#xff08;簡稱 “北極狐科技”&#xff09;與銳捷網絡股份有限公司&#xff08;簡稱 “銳捷網絡”&#xff09;正式簽署合作協議&#xff0c;雙方將聚焦 ICT 基礎設施及解決方案領域&#xff0c;圍繞 API 全鏈路管理與智能化研發…

RK3568筆記八十三:RTMP推流H264和PCM

若該文為原創文章,轉載請注明原文出處。 前面有通過勇哥,實現了RTMP推流,但一直想加上音頻,所以經過測試,寫了一個demo, ffmpeg是使用ubuntu下安裝測試的。 安裝參考:Ubuntu20.4下x264、x265、fdk-aac和FFmpeg4.3源碼編譯安裝_ubuntu安裝libx264-CSDN博客 記錄:實現從…

產業園智慧化升級中 DDC 樓宇自控系統的集成應用優勢:多業態協同與能源可視化管控?

摘要? 在產業園智慧化升級浪潮中&#xff0c;直接數字控制&#xff08;DDC&#xff09;系統憑借強大的集成能力&#xff0c;成為實現多業態協同與能源可視化管控的核心技術。本文深入剖析 DDC 系統在整合園區多元業態、優化能源管理方面的獨特優勢&#xff0c;通過系統集成打…

Vue 3瀑布流組件實現詳解 - 圖片展示方案

引言&#xff1a;瀑布流布局的魅力與應用場景 在當今富媒體內容主導的網絡環境中&#xff0c;瀑布流布局已成為展示圖片商品等內容的流行方式。它通過動態布局算法在有限空間內最大化內容展示&#xff0c;提供視覺連續性和流暢瀏覽體驗。本文將深入探討如何使用Vue 3實現一個功…

如何確保郵件內容符合反垃圾郵件規范?

一、遵守相關法規 美國《CAN-SPAM法案》規定&#xff0c;郵件頭信息必須真實準確&#xff0c;要標明廣告性質、提供有效地址&#xff0c;并在 10 個工作日內響應退訂請求。 歐盟《通用數據保護條例》&#xff08;GDPR&#xff09;強調獲得用戶明確同意&#xff0c;數據使用要…

MQ解決高并發下訂單問題,實現流量削峰

文章目錄 示例&#xff1a;電商秒殺系統中的流量削峰1. 依賴引入&#xff08;Maven&#xff09;2. 消息隊列配置&#xff08;RabbitMQ&#xff09;3. 生產者&#xff1a;訂單服務&#xff08;接收高并發請求&#xff09;4. 消費者&#xff1a;庫存服務&#xff08;按系統容量處…

【二進制安全作業】250616課上作業2 - 棧溢出漏洞利用

文章目錄 前言一、使用環境二、程序源碼1. C語言源碼2. 編譯方式 三、源碼分析四、反匯編分析1. 檢查文件安全性2. 查找目標函數3. 計算偏移量4. 繞過 strlen5. 繞過 if 五、編寫EXP結語 前言 直接進入正題 一、使用環境 處理器架構&#xff1a;x86_64 操作系統&#xff1a;U…

Python類型處理與推導式

歡迎來到啾啾的博客&#x1f431;。 記錄學習點滴。分享工作思考和實用技巧&#xff0c;偶爾也分享一些雜談&#x1f4ac;。 有很多很多不足的地方&#xff0c;歡迎評論交流&#xff0c;感謝您的閱讀和評論&#x1f604;。 目錄 1 引言2 類型處理3 高效操作AI開發常見數據結構3…

數據庫char字段做trim之后查詢很慢的解決方式

select * from TABLE0 where trim(column1):param 當表數據量大時&#xff0c;即使給column1字段加上索引&#xff0c;這條查詢語句也會很慢。 因為使用trim函數后&#xff0c;column1的索引會失效&#xff0c;有兩種處理方法&#xff1a; 1.給表加上trim(column1)函數索引 …

Kafka核心架構解析:從CAP理論到消息可靠性的設計哲學

摘要 本文從分布式系統CAP理論和消息可靠性兩個視角深入解析Kafka的架構設計&#xff0c;通過概念關系圖和組件交互圖揭示其核心設計思想&#xff0c;并詳細拆解各組件功能與協作機制。文章包含完整的交互流程分析和配置參數說明&#xff0c;是理解Kafka設計精髓的實用指南。 一…

LeetCode 275.H指數 II

題目&#xff1a; 給你一個整數數組 citations &#xff0c;其中 citations[i] 表示研究者的第 i 篇論文被引用的次數&#xff0c;citations 已經按照 非降序排列 。計算并返回該研究者的 h 指數。 h 指數的定義&#xff1a;h 代表“高引用次數”&#xff08;high citations&…

OV汽車攝像頭cmos sensor 相關情況介紹

OV汽車攝像頭cmos sensor 相關情況介紹 文章目錄 OV汽車攝像頭cmos sensor 相關情況介紹**1. 汽車攝像頭三大場景應用****2. 車載CMOS SENSOR的核心技術****3. 兩大車規認證:實現真正的車規可靠性****4. 最新產品**2022年,汽車智能化加碼提速,被譽為“智能駕駛之眼”的車載攝…

Pinia在多步驟表單中的實踐應用

引言 Pinia是Vue 3推薦的狀態管理庫&#xff0c;相比Vuex提供了更簡潔的API、更好的TypeScript支持和更靈活的組合式風格。本文基于實際項目代碼&#xff0c;詳細介紹Pinia在多步驟表單場景中的應用方法。 1. Pinia Store的創建與設計 1.1 基礎Store結構 在src/store/modul…

目標檢測之YOLOV11的環境搭建

1 創建虛擬環境 conda create -n yolov11 python3.9 conda activate yolov112 安裝ultralytics 默認是有cuda的情況下 # Install all packages together using conda conda install pytorch torchvision conda 還不能直接安裝ultralytics&#xff0c;需要通過pip進行安裝 …

Android 構建配置中的變量(通常在設備制造商或定制 ROM 的 AndroidProducts.mk 或產品配置文件中定義)

以下是 Android 構建系統中常見的用于產品配置、資源復制和構建規則的變量 1. PRODUCT_COPY_FILES 作用&#xff1a;指定需要從源碼樹復制到鏡像的文件。示例&#xff1a;PRODUCT_COPY_FILES \device/manufacturer/device_name/file.conf:$(TARGET_COPY_OUT_VENDOR)/etc/file…

火山引擎項亮:機器學習與智能推薦平臺多云部署解決方案正式發布

資料來源&#xff1a;火山引擎-開發者社區 2022年7月20日&#xff0c;火山引擎2022 Force原動力大會在北京諾金酒店成功舉辦。在上午的議程中&#xff0c;《推薦系統實踐》一書的作者、同時也是火山引擎機器學習系統負責人——項亮&#xff0c;展開了題目為《開放AI基建&#x…

NVR的方法多種取決于應用場景

攝像頭接入NVR&#xff08;網絡視頻錄像機&#xff09;的方法通常取決于具體的應用場景和設備支持的功能。 一、通過局域網接入 設備連接 &#xff1a; 將攝像機通過網絡線纜連接到NVR的對應端口&#xff0c;或者將攝像機和NVR都連接到同一個路由器/交換機上&#xff0c;確保它…

JAVA從入門到精通一文搞定

博主介紹&#xff1a; 大家好&#xff0c;我是想成為Super的Yuperman&#xff0c;互聯網宇宙廠經驗&#xff0c;17年醫療健康行業的碼拉松奔跑者&#xff0c;曾擔任技術專家、架構師、研發總監負責和主導多個應用架構。 近期專注&#xff1a; DeepSeek應用&#xff0c;RPA應用研…

火山引擎發布大模型生態廣場MCP Servers,LAS MCP助力AI數據湖構建

資料來源&#xff1a;火山引擎-開發者社區 近日&#xff0c;火山引擎發布大模型生態廣場—— MCP Servers&#xff0c;借助字節跳動生態能力&#xff0c;通過“MCP Market&#xff08;工具廣場&#xff09; 火山方舟&#xff08;大模型服務&#xff09;Trae&#xff08;應用開…