1. dsp上電復位配置什麼?
dsp的大、小端,自啟動(boot)模式,pcie模式,網路協處理器時鐘選擇需要在上電復位的時候選擇,怎麼選擇?
依靠上電時候鎖定dsp device configuration pins(裝置配置管腳)的邏輯電平。
配置管腳的邏輯電平怎麼設定?
一般採用兩種方式:
合理的板載設計應該確保所有的裝置輸入引腳都在乙個有效電平而不能懸空,可以通過上拉/下拉電阻實現,當然可以內部上拉或外部上拉。
裝置通過評估需求,一般內部實現上拉/下拉。但是一些管腳需要外部上拉/下拉。
(1) 裝置配置管腳:這些管腳同時需要輸出(c6678的配置管腳和gpio是公用管腳)且沒有驅動(高阻態),即使內部上拉/下拉電阻也許滿足需求電平,
但是外部上拉/下拉也是必須,目的是為了確保配置有效,也方便切換模式。
(2) 其他輸入管腳:如果內部上拉/下拉沒有滿足需求電平,則需要外部上拉/下拉。
2. tms320c6678裝置配置管腳
(1) lendian :決定dsp的大小端。
(2) bootmode[12:0] :決定dsp的自啟動模式(詳情見bootloader for the c66x dsp user guide)。
(3) pciessmode : 決定pcie子系統處於ep、legacy ep還是rc。
(4) pciessen : 決定是否使能pice 子系統,預設是不使能。
(5) packsel: 決定網路協處理器的輸入時鐘是核時鐘還是passclk時鐘。
3.dsp上電時序
dsp的上電時序,就是上電復位的時序。
裝置初始化分為兩個階段:
(1) 所有的供電電源穩定,不同的電源有供電時序,可見下面時序圖。
(2) reset、por、reserfull按時序拉高,當然還包括時鐘輸入穩定。
上電時序圖
注意:
(1) 在電源穩定期間,por要保持低電平,所以復位前拉低。
(2) ddrclk、refclk應該在por拉高前觸發。
(3) 一旦獲得***d18供電,resetstat拉低。
在***d18供電前,所有的lvcmos輸入和雙向管腳不能驅動為低電平或拉高。
(4) 在***d18有效後,resetstat可以在任何時刻被拉高。在por控制boot下,reset必須在por拉高前拉高。
(5) 在電源穩定後,por必須持續保持低電平至少100us。至此,電源穩定階段結束。
(6) 在電源穩定階段後裝置初始化需要500個refclk時鐘週期。最大時鐘週期是33.33nsec,所以在por上公升沿前延遲16us是必要的。在整個16us期間,時鐘必須是啟用的。
(7) 在por穩定在高電平之後,resetfull必須要保持低電平24個refclk時鐘週期。
(8) 在resetfull上公升沿,裝置鎖定gpio 配置管腳的電平,然後進行配置,到復位狀態位resetstat訊號拉高延遲大約10000到50000個時鐘週期。
(9) gpio配置必須在resetfull上公升沿前保持至少12個refclk時鐘週期(transitions)。
(10) gpio配置必須在resetfull上公升沿后保持至少12個refclk時鐘週期(transitions)。
總的來說:
在各個電源供電正常後,dsp的時鐘穩定後,驅動reset、por、resetfull依次拉高,在resetfull的上公升沿鎖定dsp復位配置的gpio電平,然後resetstat拉高,則dsp上電復位完成。
4. dsp的復位模式
總共四種復位模式,前三種復位模式都會觸發resetstat,區域性復位不會觸發resetstat.
(1) 上電復位
(2) 硬體復位
(3) 軟體復位
詳見手冊。
(4) 區域性復位
區域性復位時序圖
上電復位後,可以進行區域性復位,即對每個核單獨復位。
區域性復位可以被以下方式觸發:
一般我們不使用區域性復位,如果上電復位後,發現某些核處於復位狀態,而其他核可以連線使用,多半是區域性復位造成的,應該把lresetnmien 設定為1,則可以避免這個問題。
5. fpga控制dsp上電復位程式。
module dsp_rst(
input clk_25m,
input resetstat, //dsp復位狀態 0表示復位態 1表示工作態
input locked, //時鐘模組是否正常
output ref lresetnmienz = 1'b0, //區域性復位管腳
output reg porz=1'b0, //power-on reset
output reg resetfull=1'b0, //full reset
output reg reset=1'b0
);reg [2:0] res_state=2'b00;
reg [15:0] por_counter=16'b0,resetfull_counter=16'b0,reset_counter=16'b0;
parameter idle=2'b00,pull_reset=2'b01,pull_por=2'b10,pull_resetfull=2'b11;
always @(posedge clk_25m)
if(locked==1)
begin
case(res_state)
idle:
res_state<=pull_reset ;
pull_reset: if(reset_counter<25000)
begin
reset_counter<=reset_counter+16'b1;
res_state<=res_state;
reset<=1'b0;
porz<=1'b0;
resetfull<=1'b0;
endelse
begin
reset<=1'b1;
lresetnmienz<=1`b1; //禁止區域性復位。
res_state<=pull_por;
endpull_por: if(por_counter<25000)
begin
por_counter<=por_counter+16'b1;
res_state<=res_state;
porz<=1'b0;
endelse
begin
porz<=1'b1;
res_state<=pull_resetfull;
endpull_resetfull:if(resetfull_counter<25000)
begin
resetfull_counter<=resetfull_counter+16'b1;
res_state<=res_state;
resetfull<=1'b0;
endelse
begin
resetfull<=1'b1;
res_state<=res_state;
endendcase
endelse
begin
reset_counter<=16'b0;
resetfull_counter<=16'b0;
por_counter<=16'b0;
res_state<=idle;
reset<=1'b0;
porz<=1'b0;
resetfull<=1'b0;
endendmodule`
TMS320C6678上電配置和FPGA復位DSP
1.dsp上電復位配置什麼?dsp的大 小端,自啟動 boot 模式,pcie模式,網路協處理器時鐘選擇需要在上電復位的時候選擇,怎麼選擇?依靠上電時候鎖定dsp device configuration pins 裝置配置管腳 的邏輯電平。配置管腳的邏輯電平怎麼設定?一般採用兩種方式 合理的板載設...
TMS320C6678多級流水線技術
tms320c6678多級流水線技術 tms320c6678多核dsp提供了靈活的指令流水線結構用於提高dsp的處理效能。如圖下所示,流水線可以分為 分別為指令預取 指令解碼和指令執行。3.pw 記憶體讀取資料,等待資料準備好 4.pr 指令讀取。指令預取過程結束後,指令被讀取到cpu中,隨後開始指...
TMS320C5509A自帶ADC配置引數計算
tms320c5509a自帶adc使用起來比較方便,但是確定引數比較麻煩。作者嘗試使用程式計算出來,方便dsp自帶adc的使用。設計的程式可 直接計算出tms320c5509a自帶adc配置引數,以十六進製制形式輸出結果,方便可用。另外作者發現,ti的tms320vc5509 dsp analog ...