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