再談fpga開發(狀態機的應用)

【 聲明:版權所有,歡迎轉載,請勿用于商業用途。 聯系信箱:feixiaoxing @163.com】

? ? ? ? 前面說過,fpga上面最基礎的部分是寄存器,而所有寄存器存在每一個clock下,都有被翻轉的可能性。至于這些寄存器是不是真的翻轉,或者說是保持不變,取決于當時的狀態。所以在clock運行的區間內,我們習慣于把任務切分成若干個狀態,不同狀態下的register是不一樣的,當然只有一部分register參與工作,大部分保持不變。等到條件成熟的時候,再切換到下一個狀態。這就是fpga下狀態機運行的基本原理。

1、時序邏輯是基礎

? ? ? ? 寄存器是fpga的基本電路。或者可以這么說,fpga的基本構成就是一個一個的時序邏輯。這些時序邏輯或者置0,或者置1,或者取反,或者保持不變。針對這些寄存器的運算,那就是組合邏輯。當然組合邏輯不能鏈路太長,否則影響時序。除了寄存器的運算之外,組合邏輯的另外一個信號來源就是外部輸入。所有的外部輸入都可以看成是組合邏輯。

2、組合邏輯是輔助

? ? ? ? 時序邏輯可以保證,信號在clock的周期內保持不變,這是極為重要的特性。如果信號隨時發生改變,那也就沒有辦法參與運算了,因為很多的運算本身就是依賴于其他信號的存在,這樣才會一步一步向前推進,而組合邏輯則不一樣。

? ? ? ? 就拿外部信號舉例,假設來一個gpio信號,fpga正常運行,此時由于gpio優先級高,那么下一個clock就要優先處理這個gpio。但是如果下一個clock來臨之前,又有一個gpio信號出來。不失一般性,前者命名為signal A,后者命名為signal B,那么此時就會發生仲裁,如果signal B優先級高,下一次優先處理的信號就是signal B。在clock之間的這段時間,時序電路是不變的,但是組合邏輯可能隨時由于外部的輸入而發生變化,這就是組合邏輯的特點。

3、clock和rst是最重要的兩個信號

? ? ? ? clock是寄存器的發動機,它推動著寄存器,或者是時序電路不停向前走。形象一點比喻,它就類似于交響樂隊的指揮棒,每一個演奏者都要跟著這個指揮棒進行操作。而rst就是復位信號,在板子還沒有啟動的時候,或者說clock還不穩的時候,rst保證了信號最初始的一個狀態。所以,正是由于clock和rst的存在,讓fpga可以按照我們的設計來處理各種各樣的信號。

4、小模塊的狀態機和系統狀態機

? ? ? ? 狀態機不僅僅是小模塊可以使用,大模塊也可以使用。在小模塊里面,不同狀態下,相當于一部分register參與運算,另外一部分register不參與運算。而在大模塊下,則相當于一部分模塊參與運算,另外一部分模塊不參與運算。本質上,兩者是一樣的。

5、從波形到代碼,再到波形

? ? ? ? 了解了時序邏輯、組合邏輯和狀態機之后,我們發現fpga的顆粒度很低,本質上,它就是一個信號計算器。抽象出來,就是一個一個波形。所以,如果我們需要設計什么功能,可以先設計出原型、狀態機,或者是自己先把波形畫出來,接著把這些波形轉成verilog代碼,最后在仿真測試、實際測試,驗證一下實際的波形和設計的波形是不是同一個,這樣就可以驗證自己寫的到底對不對,是設計的問題、寫的問題、還是測試的問題。

6、時刻牢記寄存器的并發性

? ? ? ? fpga最大的不同,就是寄存器的并發性。只要有時鐘在驅動,所有寄存器就有翻轉、改變的可能性。至于是不是真的改變,完全取決于當時的狀態。所以編寫verilog的時候,可以考慮下,當前信號屬于什么信號,什么時候復位,什么時候改變,改變的時候屬于什么狀態,什么時候又保持不變,這樣不停思考下去,fpga才能越寫越好,越寫越穩定。

? ? ? ? 不同的task,一旦發現數據合法性不對,就立馬恢復到初始狀態。等到所有input和register都ok之后,再去開始對應的工作,這樣就可以讓fpga一直穩定地運行下去。

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

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

相關文章

TCP如何解決網絡切換問題

一、傳統TCP的網絡切換問題核心問題:TCP 連接基于四元組(源IP、源端口、目的IP、目的端口),IP 變化導致連接失效二、改進方案與技術演進1. MPTCP(多路徑TCP) - 主流解決方案核心機制:單連接多路…

【Linux】常用命令(一)

【Linux】常用命令 一1. ls1.1 ls -a 顯示所有文件及其目錄1.2 ls -A 不顯示當前目錄和父目錄1.3 ls -d 顯示目錄本身,而不是顯示其內部內容1.4 ls -i 顯示文件的inode屬性信息1.4.1 實際用途場景1.5 ls -l 顯示文件的詳細屬性信息1.6 ls -R 遞歸顯示所有子文件1.7 …

Window 部署 coze-stdio(coze 開發平臺)

參考鏈接 https://github.com/coze-dev/coze-studio/wiki/2.-%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B https://github.com/coze-dev/coze-studio/wiki/3.-%E6%A8%A1%E5%9E%8B%E9%85%8D%E7%BD%AE 環境說明 Docker:28.3.2 系統:Window 11 配置要求 CP…

【Git】Git LFS的使用

一、簡介 Git LFS(Git Large File Storage)是由 GitHub 開發的一款 Git 擴展工具,旨在幫助開發者更高效地管理倉庫中的大文件。傳統 Git 會將文件的每個版本完整存儲在倉庫歷史中,導致大文件(如音頻、視頻、數據集、二…

不坑盒子:Word里1秒制作“花括號”題目,多音字組詞、形近字組詞……

1. 30秒看懂它能干啥 用“不坑盒子”插件,在 Word 里輸入: 樂,l(快樂),yu(音樂);長,chng(長短),zhǎng(長大)點一下【總分關系】,瞬間出現左邊是“樂”右邊并列兩行拼音括號的花括號結構;再點【并列關系】,又能做出只…

Gateway網關層灰度方案—xx互聯網醫院系統灰度發布設計與思路詳解

通過之前技術的積累,終于開始了本文的編寫,如果對灰度、負載均衡、上下文傳遞、網關不太理解,可以先學習博主的以下博客內容。共勉: 企業級 Java 應用灰度發布設計方案與實踐全解析《Spring 中上下文傳遞的那些事兒》 Part 1&…

學習游戲制作記錄(改進投擲劍的行為)7.27

1.實現劍跟隨飛行方向旋轉修改劍的預制體使劍的朝向對準右x軸Sword_Skill_Contorl腳本:private void Update(){transform.right rb.velocity;//時刻更新位置}2.實現劍插入地面或者敵人修改預制體為觸發器Sword_Skill_Contorl腳本:private bool canRotat…

嵌入式軟件面試八股文

目錄 一、指針函數和函數指針 二、指針的大小 三、sizeof 和 strlen 區別 四、數組指針和指針數組 五、C語言里面內存分配的方式 六、struct結構體和union聯合體的區別 八、數組和鏈表的區別 九、寫一個宏這個紅返回輸入參數比較小的一個 十&#xff0c;使用#include<…

Gradle#Plugin

查看任務來自那個插件 /gradlew tasks --all <taskName>Java Plugin Java Library Plugin

滲透高級-----測試復現(第三次作業)

文章目錄測試復現一&#xff0c;環境搭建二&#xff0c;通過VS Code連接cacti三&#xff0c;測試測試復現 一&#xff0c;環境搭建 1&#xff0c;在ubuntu虛擬機上安裝MySql數據庫&#xff1a; apt-get upgrade # 更新apt-get upgrade apt-get update # 更新apt-ge…

LINUX727 磁盤管理回顧1;配置文件回顧

邏輯卷快照 快照為什么這么小RAID 磁盤陣列 raid 0 raid 1 raid5 raid10raid0 raid1 raid5 raid6 raid10 rank;create raid0 mdadm -c /dev/md0 -l 0 -n 2 /dev/sdb3 /dev/sdb4 raid1 mdadm -c /dev/md1 -l 1 -n 2 /dev/sdb5 /dev/sdb6 raid5 mdadm -c /dev/md5 -l 5 -n 3 -x …

【筆記】Einstein關系式 D = ukBT 的推導與應用研究

文章目錄從漲落理論和能量均分定理的數學推導基于平衡統計力學的推導1. 漂移流的來源&#xff1a;Jdrift?μρ?UJ_{drift} -μρ?UJdrift??μρ?U物理機制粒子流的形成2. 擴散流的來源&#xff1a;Jdiffusion?D?ρJ_{diffusion} -D?ρJdiffusion??D?ρ3. 熱平衡要…

AJAX 原理_第一節_XHR 對象

文章目錄1.AJAX原理1.1 初識XML1.2 查詢參數1.3 案例-地區查詢1.4 案例-注冊-設置請求頭1.AJAX原理 1.1 初識XML AJAX原理是什么? XMLHttpRequest對象 XHR對象定義: 通過XMLHttpRequest可以在不刷新頁面的情況下請求特定URL,獲取數據.這允許頁面在不影響用戶操作的情況下,更…

BeautifulSoup 使用詳解與實戰示例

BeautifulSoup 是一個用于解析HTML和XML文檔的Python庫&#xff0c;它能夠將復雜的HTML文檔轉換成一個復雜的樹形結構&#xff0c;使得我們可以輕松地查找和提取所需的內容。下面我將詳細介紹BeautifulSoup的使用流程&#xff0c;并結合實際示例進行說明。一、安裝與基礎使用1.…

LangChain實戰——實現多輪對話 + Function Calling

隨著大語言模型&#xff08;LLMs&#xff09;的迅猛發展&#xff0c;“Function Calling”&#xff08;函數調用&#xff09;逐漸成為一個重要的能力&#xff0c;它使得模型不僅能聊天&#xff0c;還能像“中控大腦”一樣調用外部函數完成具體任務&#xff0c;比如查天氣、調用…

湖南(源點咨詢)市場調研 如何在行業研究中快速有效介入 起頭篇

行業研究從業人員經常需要在承接研究案子后快速的摸清委托方所在行業。而俗話說&#xff0c;隔行如隔山&#xff0c;快速了解行業&#xff0c;主要用于行業分析報告及為市場細分準入進行前期鋪墊&#xff0c;要想摸清一個行業&#xff0c;需要長期持續的跟蹤。了解一個行業&…

【c++】從 “勉強能用” 到 “真正好用”:中文問答系統的 200 行關鍵優化——關于我用AI編寫了一個聊天機器人……(16)

先看核心結論&#xff1a;兩段代碼的本質區別如果用一句話總結兩段代碼的差異&#xff1a;前者是 “帶中文支持的問答系統”&#xff0c;后者是 “真正適配中文的問答系統”。具體來說&#xff0c;兩段代碼的核心功能都是 “加載問答數據→接收用戶輸入→匹配答案”&#xff0c…

VR 技術在污水處理領域的創新性應用探索?

在廣州&#xff0c;VR 污水處理技術的應用可謂是多點開花。首先&#xff0c;在污水處理流程模擬方面&#xff0c;工程師們利用 VR 技術創建了高度逼真的污水處理廠三維模型&#xff0c;將污水處理的整個流程&#xff0c;從預處理去除大顆粒雜質和懸浮物&#xff0c;到初級處理通…

深度學習暑期科研項目(兩個月發EI論文)

深度學習暑期科研項目&#xff08;8周發EI論文&#xff09; 哈爾濱工業大學博士的六大選題對本科生而言&#xff0c;越早接觸系統的科研訓練開始上手科研項目&#xff0c;就越能在未來的升學求職中占據很大的優勢。暑假是提升個人簡歷、豐富科研經歷的最佳時期&#xff01;哈爾…

【RH134 問答題】第 1 章 提高命令行運行效率

目錄#!/bin/bash 是什么意思&#xff1f;PATH 變量有什么重要作用&#xff1f;echo 命令的作用是什么&#xff1f;解釋下列正則表達式的含義簡述正則表達式和 shell 模式匹配的區別&#xff0c;在 shell 命令使用正則表達式的時候需要注意什么&#xff1f;#!/bin/bash 是什么意…