SOC設計及Verilog學習筆記六

2021-10-06 04:59:59 字數 2608 閱讀 5529

cortex-m3軟硬體協同**設計(keil+modelsim10.1):

模組包括:m3_core、mem、apb及所連外設、matrix匯流排

目標功能:軟體驅動timer/gpio

timer模組:

// programmer's model

// 0x00 rw ctrl[3:0]

// [3] timer interrupt enable

// [2] select external input as clock

// [1] select external input as enable

// [0] enable

// 0x04 rw current value[31:0]

// 0x08 rw reload value[31:0]

// 0x0c r/wc timer interrupt

// [0] interrupt, right 1 to clear

// 0x3e0 - 0x3fc id registers

//-------------------------------------

1、timer寫使能:ox4000 0000(寫0x0000 0001)

2、timer載入初始計數值:0x4000 4008(寫任意初值)

3、timer計數值進行讀取:0x4000 4004

4、timer計數完成發出中斷訊號:0x4000 400c

在keil中進行驅動:

//timer使能

taddr =(int*)0x40000000;

*taddr = 0x00000001;

//timer載入計數值

taddr =(int*)0x40000008;

*taddr =100;

//timer讀

taddr =(int*)0x40000004;

波形:

gpio模組:

`define gpio_swporta_dr_offset    5'b00000  //寫資料到輸出引腳

`define gpio_swporta_ddr_offset 5'b00001 //配置io方向

`define gpio_swporta_ctl_offset 5'b00010 //使能

`define gpio_inten_offset 5'b01100

`define gpio_intmask_offset 5'b01101

`define gpio_inttype_level_offset 5'b01110

`define gpio_int_polarity_offset 5'b01111

`define gpio_intstatus_offset 5'b10000

`define gpio_raw_intstatus_offset 5'b10001

`define gpio_porta_eoi_offset 5'b10011

`define gpio_ext_porta_offset 5'b10100

`define gpio_ls_sync_offset 5'b11000

gpio位址[6:2]五位控制訊號如上圖所示

1、gpio資料方向定義為輸出模式0x4000 4004(每位都要寫1,給0xff)

2、gpio軟硬體控制一0x4000 4008(軟體1)

2、gpio資料輸出0x4000 4000(資料寫入,這邊給0x0-0xf-0x0-0xf)

在keil中進行驅動:

//gpio寫使能

gaddr=(int*)0x40004004;

*gaddr=0xff;

gaddr=(int*)0x40004008;

*gaddr=0x00000001;

//gpio輸出

gaddr=(int*)0x40004000;

*gaddr=0x0f;

gaddr=(int*)0x40004000;

*gaddr=0x00;

gaddr=(int*)0x40004000;

*gaddr=0x0f;

gaddr=(int*)0x40004000;

*gaddr=0x00;

波形:

SOC設計及Verilog學習筆記三

soc設計課 3.20 assign 2 out in 過於理想,放於test benchs 電路設計 考慮可綜合性 綜合工具 1 hdl 功能網表 2 約束條件 效能要求 根據約束自動選擇合適的電路結構進行網表優化 3 8解碼器例項 兩種實現方式 不在case條件中的狀態賦值 defult cas...

verilog學習總結及練習

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

verilog學習記(學習設計cpu)

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