SOC設計及Verilog學習筆記三

2021-10-05 01:11:16 字數 1959 閱讀 2235

soc設計課-3.20

assign #2 out=in(過於理想,放於test benchs)

電路設計(考慮可綜合性)

綜合工具:

1『hdl(功能網表)

2'約束條件(效能要求)-根據約束自動選擇合適的電路結構進行網表優化

3-8解碼器例項(兩種實現方式)

不在case條件中的狀態賦值-defult

case條件不全會導致latch(邊沿觸發)

計數器rtc--需要時序邏輯,n位計數器需要n位暫存器-注意定義cnt初值

計數器電路圖??

同步復位與非同步復位區別-復位過程是否包含時鐘沿

帶復位電路功耗稍高

定時器timer

時間片-嵌入式系統中任務切換,時分復用

串並轉換-位寬匹配-速度匹配

fifo(匹配兩端速度不一樣的情況,資料積累然後打包傳送)

同步fifo:儲存電路+控制電路+io+read/write+empty/full+clk+reset

-----------------------3.27------------------

ram:

單埠-一組位址-只能讀/寫(用作緩衝分時復用)

雙埠-兩組位址-可同時讀寫(用作緩衝效率高)

fifo:(first in first out)輸出吞吐率》輸入吞吐率(平均)

位元率-吞吐率=流速-流量

用途: 匹配兩端位元率(瞬間)不一樣的情況,資料積累然後打包傳送,減少cpu負載

1進快出慢.cpu快於uart,cpu->fifo->uart

2.進慢出快.uart->fifo->cpu

fifo框架:(二維儲存陣列/讀寫位址,自動遞增/滿空標誌)

二維:depth(深度)*width(位寬)-位寬要與匯流排匹配-深度取決於單次輸入的最大塊,比如dma 一次取乙個burst長度

fifo外圍+串並轉換結構-實現掛在匯流排上的資料輸出

uart資料幀連續

位址規則:

1、都用滿

2、讀寫順序一致

滿訊號-給輸入

空訊號-給輸出

-------------fifo設計----------------

陣列+控制+標識

寫數-讀數=0 空

寫數-讀數=depth 滿

防止fifo內資料覆蓋:

資料寫入時檢查是否已滿/資料不滿+雖然滿但是讀寫同時進行

資料溢位:overflow=full&we&!re

資料下溢:underflow=empty&re&!we

6管sram結構

---------------ram/rom設計--------------

埠:a/din/cen(片選)/wen(寫)/讀訊號可由cen和we確定/q/clk

時間視窗:t1出控制訊號(setup window+hold)

-----------------fsm(有限狀態機)-----------------

mcu中休眠/工作轉換

uart

※涉及協議的都需要狀態機

套路:(狀態一般有進有出形成環,單向概率很小)

1、當前狀態:

always @(posedge)

current state=next state

2、下乙個狀態:

always @* 任何變化

對當前狀態下的條件進行判斷

case(current state)

state a:

state b:

state c:

注意遍歷情況均有對應賦值,否則會造成latch

3、控制輸出:

always @*

begin 

case(current state)

state:=2'b 00;

/狀態機編碼-parameter/define

parameter state a=2'b 00;

SOC設計及Verilog學習筆記六

cortex m3軟硬體協同 設計 keil modelsim10.1 模組包括 m3 core mem apb及所連外設 matrix匯流排 目標功能 軟體驅動timer gpio timer模組 programmer s model 0x00 rw ctrl 3 0 3 timer interr...

verilog學習總結及練習

1 乙個程式模組有多個initial和always過程塊,每個initial和always說明語句在 一開始同時立即開始執行。initial語句只執行一次,always語句則是不斷迴圈往復的執行,所以initial過程快比較適合做變數的初始化。乙個模組中可以有多個initial模組,它們都是並行執行...

verilog學習記(學習設計cpu)

很早之前,自己就對cpu的設計非常感興趣。和十幾年前比較,現在網上開源的cpu 還是很多的,比如說risc v openrisc openmips等等。當然,如果是從學習的角度來說,openrisc和openmips還是非常不錯的。那麼,如果是希望能夠深入了解cpu是怎麼設計的,應該需要做哪些準備呢...