PicoBlaze輸入 輸出埠

2021-08-20 02:11:47 字數 2424 閱讀 2597

picoblaze輸入/輸出埠

picoblaze微控制器支援最大256個輸入口和256 個輸出口,picoblaze與輸入和輸出有關的訊號在「picoblaze微控制器介面訊號」部分有詳細說明,包括port_id[7:0]、in_port[7:0]、out_port[7:0]、read_strobe write_strobe。在時序要求苛刻的設計中, 對port_id 和資料路徑允許兩個時鐘週期, 對於read_strobe 和write_strobe 需要約束到乙個時鐘週期。為了提高效能,在允許的情況下可以插入流水暫存器。

port_id:此訊號作為輸入或輸出埠的標識或者說是位址。它的有效高電平持續兩個時鐘週期,這樣做的目的是為了有足夠的時間進行解碼,有足夠的時間與非同步ram 連線,還有,在雙週期操作時,允許從同步ram(例如,bram)中讀資料。

input 和output 操作支援直接和間接定址,埠位址由立即數指定或由暫存器指定。間接定址方式適用於對bram、具有連續位址的外設、片內或片外儲存器中的**的訪問。

擴充套件picoblaze 外設其實非常方便,唯一具有挑戰性的地方在於,如何用最少的邏輯資源實現對port_id 解碼。表12-2 所示為一般的方法(取決於埠數)。

一、 input 操作

輸入操作將in_port輸入口的資料傳送到由暫存器sx 指定的16 個資料暫存器中的任何乙個,如圖12-11所示,port_id 由sy確定或者由乙個8位的立即數確定,指定輸入源。輸入源由乙個多路器選擇,多路器的大小與輸入源的通道數成正比,它直接影響picoblaze 的效能。

圖12-11 輸入操作和fpga內部介面

圖12-12中為輸入指令時序圖,圖中顯示picoblaze微控制器從由s7指定的埠讀資料,資料被讀入s0。當執行此指令時,暫存器s7 的內容出現在port_id上,port_id被fpga內部邏輯解碼,被請求的資料出現在in_portread_strobe 在輸入指令的第二個時鐘週期變高,儘管read_strobe 主要用於fifo,以使fifo 能夠更新它的讀指標。出現在in_port的資料在第2 個上公升沿被取樣,表明input指令執行完畢,之後,資料被取樣進入s0。

圖12-12 input 指令的port 時序

從圖12-12時序圖可以看出,由於port_id保持兩個時鐘週期有效,所以輸入資料多路器可以被寄存,以保證效能,如圖12-13所示。

圖12-13 由多路器將多個輸入變為一路輸入

二、 output 操作

輸出操作將暫存器sx 的內容送到out_port,port_id 由暫存器sy 確定或者由乙個8位的立即數確定,指定輸出口。write_strobe 表明out_port 資料有效,並且準備好**獲。通常情況下,write_strobe 與port_id 組合成時鐘使能或者寫使能供fpga邏輯捕獲輸出資料。

圖12-14 out_port與fpga邏輯

圖12-14是乙個擴充套件輸出埠的例項,圖12-15為其時序圖,picoblaze 要將s0的內容送到port_id為65hex 的埠,s0 的內容出現在out_port,埠位址65hex 出現在port_id,write_strobe 在指令週期的第二個時鐘邊沿變高,表明資料有效。

圖12-15 out_port 指令的port 時序

對於8個或者少於8個的輸出口,常用one-hot編碼方式,如圖12-16所示,因為它僅需要對port_id的某一位進行解碼,所以很大程度上減少了fpga解碼邏輯所需資源,同時也提高了效能。如果用來解碼的port_id位數為3或者小於3,則解碼邏輯僅用一級邏輯即可實現,這時的效能最高。

圖12-17所示為乙個簡單的輸出程式,用one-hot編碼定義4個輸出口,同時定義了乙個廣播式的輸出口,先向4個輸出口輸出4個不同的值,最後兩條語句將所有4個口清零。

圖12-16 簡單的輸出

圖12-17 one-hot 編址輸出例程

常用技巧 輸入輸出優化 輸入輸出外掛程式

我們知道cin cout是比較慢的,不過它們可以加速。在 中加入這兩句即可 std ios sync with stdio false std cin.tie 0 加速過後cin的速度與scanf的速度近似 當然,加速過後就不要混用print和cout,scanf和cin了。因為不同步,後果會很嚴重...

推挽輸出和開漏輸出 MCU輸入輸出埠設定

輸入輸出 gpio 是mcu最基本的功能,但硬體工程師能將各種輸入輸出模式徹底弄清楚的人卻並不多。以下是一款mcu gpio的內部結構。輸入模式 1,上拉 下拉輸入 保證無輸入訊號時輸入端的電平為高 低電平。電阻還能起限流作用,弱強只是阻值不同。在gpio懸空時,也可配置為輸入上拉 下拉模式,提高抗...

微控制器 並行埠輸入輸出實驗

讀s10撥碼開關的狀態作為p1的輸入,p0埠做輸出接8個發光二極體。1 點亮板子上的第乙個燈d0。include void main 2 點亮d0 d2 d4 d6燈,與d1 d3 d5 d7燈交替閃爍。include define uint unsigned int define uchar un...