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是怎麼設計的,應該需要做哪些準備呢...