DSP的高速串行外設(shè)接口設(shè)計(jì)
3 SPI硬件設(shè)計(jì)
寄存器在SPI中起著決定性的作用.無(wú)論是在微控制器接口,還是SPI控制接口,寄存器在數(shù)據(jù)傳輸和控制方面都是主要的組成部分。而寄存器最基本最重要的單元是觸發(fā)器.只有改善觸發(fā)器的結(jié)構(gòu),才能提高整個(gè)SPI接口的性能。
有的串行接口設(shè)計(jì)中采用B結(jié)構(gòu)的觸發(fā)器設(shè)計(jì),這些結(jié)構(gòu)里應(yīng)用的是一種簡(jiǎn)單的MOS管做開(kāi)關(guān).雖然MOS管做開(kāi)關(guān)有功耗低,占面積小的優(yōu)點(diǎn)。但要提高它的電路工作頻率.開(kāi)關(guān)速度,制作丁藝卻是越來(lái)越困難。而且如果輸入信號(hào)不強(qiáng).就很可能出現(xiàn)信號(hào)倒流,這就需要一個(gè)較高電壓來(lái)控制開(kāi)關(guān)。這也不利于數(shù)據(jù)傳輸和降低功耗等等。
為了解決由MOS管做開(kāi)關(guān)時(shí)引起的種種難題.來(lái)實(shí)現(xiàn)在TMS320LF2407串行接口中的信息傳遞的高速率。本設(shè)計(jì)綜合考慮速度、工作電壓、噪聲容限等因素的影響.采用了一種新穎的觸發(fā)器結(jié)構(gòu)(圖4A部分),本文接口電路中大都采用了該觸發(fā)器的電路設(shè)計(jì),工作電壓降低到3.3V,大大降低了整體功耗;在開(kāi)關(guān)方面采用了三態(tài)門,有效的防止了信號(hào)倒流,實(shí)現(xiàn)了信號(hào)傳輸?shù)姆€(wěn)定;添加了一個(gè)反饋信號(hào),在需要的時(shí)候.能夠把所需反饋信號(hào)再次輸入;同時(shí)加快r開(kāi)關(guān)速率,帶負(fù)載的能力也增強(qiáng)。
圖4 A、B兩種觸發(fā)器比較
4 RTL級(jí)設(shè)計(jì)
隨著數(shù)字系統(tǒng)設(shè)計(jì)的復(fù)雜性不斷增加,在設(shè)計(jì)初期指定有效的設(shè)計(jì)策略對(duì)于整個(gè)設(shè)計(jì)是至關(guān)重要的。行為描述方式是對(duì)系統(tǒng)數(shù)學(xué)模型的描述。它包括RTL、算法級(jí)、系統(tǒng)級(jí)的描述。RTL是指通過(guò)描述寄存器之間數(shù)據(jù)流動(dòng)來(lái)描述數(shù)字電路系統(tǒng),是一個(gè)數(shù)據(jù)流的概念.寄存器與寄存器之間的數(shù)據(jù)處理由組合邏輯完成。RTL級(jí)是Verilog較高抽象層次,在這個(gè)抽象層次上,模塊可以根據(jù)設(shè)計(jì)的算法來(lái)實(shí)現(xiàn).而不用考慮具體的實(shí)現(xiàn)細(xì)節(jié)。
4.1寄存器整體電路設(shè)計(jì)
下面是部分Verilog HDL源代碼.描述了數(shù)據(jù)傳輸時(shí)相關(guān)寄存器的功能設(shè)置:先是對(duì)復(fù)位時(shí)各個(gè)寄存器的初始值,接下來(lái)是對(duì)寄存器進(jìn)行功能設(shè)計(jì).和數(shù)據(jù)傳輸時(shí)候產(chǎn)生的中斷使能和標(biāo)志位的設(shè)計(jì)。
always @ (posedge Peri_clk or posedge RESET)
begin
if(RESET)
begin
outdb=8’hz; SPICCR=8’h00; SPICTL=8’h00; SPIBBR=8’h00; SPIPRI=8’h00;
end
end
always @(posedge Peri_clk or posedge RESET)
begin
if(RESET)
shift_out_d=1’b0;
else
case(1’b1)
spidat_w: SPIDAT=PeriDB; shifi_out_clk:shift_out_d=SPIDAT[7];
sample_in_clk:SPIDAT[7:0]={SPIDAT[6:0],sample in_d};
default;
endcase
end
always@(posedge Peri_clk or posedge RESET)
begin
if(RESET)
SPISTS=8’h00;
else
begin
if(SW_RESET)
SPISTS[7:6]=2’hO;
else if(int_flag_set)
begin
SPISTS[6]=1’b1;SPIBUF=SPIDAT;SPIEMU=SPIDAT;
end
else if(spibuf_r)
SPISTS[6]=1’b0;
if(overrun_flag set)
SPISTS[7]=1’b1;
else if(sts7_clr)
SPISTS[7]=1’b0;
end
end
4.2整體時(shí)序仿真
將上述Verilog代碼編譯,再寫(xiě)上對(duì)應(yīng)測(cè)試代碼進(jìn)行驗(yàn)證。圖5是寄存器的寫(xiě)操作的整體時(shí)序仿真波形圖.驗(yàn)證了上述代碼正確可行。
圖5寫(xiě)操作整體時(shí)序仿真
5 結(jié)論
本文作者的創(chuàng)新點(diǎn)是改進(jìn)了硬件觸發(fā)器的結(jié)構(gòu).用三態(tài)門和傳輸門取代那種單一MOS管的結(jié)構(gòu)。首次應(yīng)用到TMS320LF2407芯片串行外設(shè)接口上,降低工作電壓到3.3V,加快數(shù)據(jù)傳輸,而且還有相應(yīng)的反饋信號(hào),進(jìn)一步完善了觸發(fā)器結(jié)構(gòu)。同時(shí)有很好的可移植性好。具有充分的可裁剪性,本設(shè)計(jì)運(yùn)行可靠,達(dá)到預(yù)期的效果。
評(píng)論