日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Logictools Overlay

發布時間:2024/3/13 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Logictools Overlay 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

可進qq群進行相關Verilog知識交流:1073030956

Logictools Overlay

Logictools overlay 包含了可編程邏輯硬件區塊來與外部數字邏輯電路連接。Python可以做出有限狀態機(Finite State Machine)、布爾型邏輯函數和數字模式。一個可編程開關連接了硬件區和外部IO引腳之間的輸入和輸出。Logictools overlay也可以通過追蹤分析器(trace analyzer)來捕捉IO接口傳來的數據,方便我們分析調試。

Logictools IP包含了4個主要硬件區塊

  • 模式生成器
  • FSM生成器(有限狀態機生成器)
  • 布爾型生成器
  • 跟蹤分析器

每一個區塊不需要匯編配置文件,這意味著一個配置可以直接加載到生成器里并立即執行。

PYNQ-Z2 logic tools

PYNQ-Z2 logictools overlay有兩個logictools邏輯控制處理器(LCP),一個與Arduino header連接,一個與RPI header連接。

Arduino header有20個引腳,RPI有26個引腳,他們可以用作為LCP的GPIO。

板上的4個LED和4個按鈕可以連接到任意一個LCP上,使得擴展輸入成為了可能。注意!LED和按鈕是共享的,在一個時刻只能被一個LCP使用。

布爾型生成器


與BaseOverlay不一樣,我們要用LogicToolsOverlay來導入對應的logictools.bit。所謂布爾型生成器,就是用與、或、異或、非來構成最終的布爾型輸出。在代碼里,我們用“&”、“|”、“^”、“~”來分別代表上面四個運算。接下來,我們先構建一個簡單的表達式:

LD2為班上的一個LED,PB3/0為板上的兩個按鈕。這里我們的運算就是PB3和PB0做異或運算后,把1/0賦值給LD2進行輸出。


從bit文件轉換出的logictools_olay類里,我們可以找到布爾型生成器,用其初始化一個布爾型生成器出來,并用上面的表達式配置該生成器,隨后用run來運行。

這時候,我們可以按動板上的PB0/3并觀察LD2,發現確實是按照異或法則進行的。

調用stop函數即可停止生成器運作。

剛剛,我們使用列表存儲了一個表達式,事實上,我們可以使用可讀性更高的字典來存儲表達式,并且我們可以存儲不止一個。

在上面的代碼中,我們除了存儲了異或門,還增加了一個與門。

模式生成器

接下來我們展示一下如何操作模式生成器的單步模式。需要注意,并不是所有的logictool庫中生成器都是單步的。

在這個例子里,我們只用python代碼來模擬電路,并用追蹤生成器捕捉到的波形來驗證我們的結果。

首先,我們導入logictools overlay,并通過代碼形式模擬波形。波形的構造滿足一定格式。用{‘signal’:[]}來表明輸入的信號波形。在[]內,我們逐一添加波形信息。格式為:{‘name’:’’, ’pin’:’’, ‘wave’:’lh.’}其中l代表low波,h表示high波,‘.’表示重復前面波形。

然后我們用logictools里的Waveform來將上述格式的信息轉換為板能識別的波形。

接下來,我們按照上圖代碼為我們的模擬內容增加一點東西。外層的{‘signal’:[]}框架不變,在[]里,我們將之前的4個模擬波形信號用列表的方式打包,并命名為‘stimulus’(列表的第一個元素為名稱),以同樣的格式增加一欄‘analysis’。輸出的效果如圖所示。Analysis欄并沒有任何輸出,這是因為我們還未用模式生成器來追蹤它。Waveform函數只是一個把代碼轉換成模擬波形并輸出的函數而已,不具備追蹤功能。

按照上圖代碼,我們生成一個模式生成器,其創建方式與布爾型生成器一模一樣。在配置setup的時候,我們傳入之前我們自己寫的波形數據,并把模擬信號和分析內容指示給他。隨后,我們調用模式生成器的step函數,即可跟蹤模擬信號。重復運行step函數,我們可以看到,analysis欄波形按照上面stimulus欄的波形進行輸出。

最后,在使用完后,使用reset進行重制。

FSM生成器

最后,我們用FSM生成器來生成一個FSM(有限狀態機)。這個例子中,我們做出來的FSM是一個格雷碼計數器,它有三個狀態位并可以通過8(即23)個狀態來計數。計數器的輸出是用格雷碼編寫的,這意味狀態之間的轉換只有一個2進制位會被改動(這是格雷碼的特性)。

自然,我們先寫入logictools.bit。

然后,我們編寫相應的狀態位。(下面的例子是Z1板上的,Z2板上并沒有D0之類的接口)

可以看出,要配置一個狀態機,我們所需要描繪其輸入、輸出、狀態、狀態變換規則。這些均采用FSM規范格式。

隨后,使用logictools里的FSM生成器創建一個,并用上面的對該狀態機進行配置。

通過show_state_diagram()函數,該狀態機會返回一個我們所定義的狀態機邏輯圖,如下圖所示。

為了能看到我們所寫的結果,我們需要根據之前的input那一欄把D0與GND連接(邏輯歸0),把D1連接到3.3V接口(邏輯歸1),這些接口在Arduino區域可以找到。

-----------------------------------------------------------------------------------------------------------------------

  • The reset input is connected to pin D0 of the Arduino connector

    • Connect the reset input to GND for normal operation
    • When the reset input is set to logic 1 (3.3V), the counter resets to state 000
  • The direction input is connected to pin D1 of the Arduino connector

    • When the direction is set to logic 0, the counter counts down
    • Conversely, when the direction input is set to logic 1, the counter counts up

      使用run命令來運行我們生成的狀態機。

最后用stop命令來完成善后工作。

總結

以上是生活随笔為你收集整理的Logictools Overlay的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。