CoolRunner-II CPLD設(shè)計(jì)
發(fā)布時(shí)間:2008/9/19 0:00:00 訪問(wèn)次數(shù):655
cpld控制adc初始化并讀回12位轉(zhuǎn)換結(jié)果,將其解串為16位存儲(chǔ)在sram中。此過(guò)程由兩個(gè)狀態(tài)機(jī)實(shí)現(xiàn),如圖1所示。
cpld配置adc內(nèi)部每一個(gè)寄存器,緊接著一個(gè)“direct mode”命令開(kāi)始對(duì)一個(gè)指定的輸入通道進(jìn)行一次轉(zhuǎn)換。cpld在讀入轉(zhuǎn)換結(jié)果之前,必須發(fā)送一個(gè)“直接模式命令”,讀入轉(zhuǎn)換結(jié)果。之后,將其解串并存儲(chǔ)在sram中。重復(fù)上面的操作,完成所有通道轉(zhuǎn)換。
(2)主狀態(tài)機(jī)
主狀態(tài)機(jī)如圖2所示。
如圖1 adc接口工作流程
如圖2 主狀態(tài)機(jī)
控制邏輯流程如下。
● 指定寄存器地址。
● 通過(guò)串行接口發(fā)送相應(yīng)的地址。
● 指定相應(yīng)寄存器的數(shù)據(jù)。
● 通過(guò)串行接口發(fā)送相應(yīng)寄存器的數(shù)據(jù)。
● 重復(fù)執(zhí)行前4步,直到所有寄存器被配置完成。
● 指定“直接模式指令”,開(kāi)始對(duì)一個(gè)選定的輸入通道進(jìn)行ad轉(zhuǎn)換。
● 讀入轉(zhuǎn)換結(jié)果,并將其寫(xiě)入sram。
● 重復(fù)執(zhí)行執(zhí)行上兩步,讀入指定輸入通道的所有轉(zhuǎn)換結(jié)果。
● 重復(fù)執(zhí)行前3步,完成所有輸入通道的轉(zhuǎn)換。
如表所示為主狀態(tài)機(jī)中每個(gè)狀態(tài)的詳細(xì)說(shuō)明。mode_flag="0"表明串行移位的數(shù)據(jù)為8位寬,它代表寄存器地址及待寫(xiě)入寄存器的數(shù)據(jù)或直接命令;mode_flag="1"表明串行移位的數(shù)據(jù)為16位寬,它代表adc轉(zhuǎn)換結(jié)果。其中有12位的adc轉(zhuǎn)換數(shù)據(jù),3個(gè)零位及一個(gè)溢出位。
如表 主狀態(tài)機(jī)中每個(gè)狀態(tài)的詳細(xì)說(shuō)明
(3)定制主狀態(tài)機(jī)
用戶可以通過(guò)修改主狀態(tài)機(jī)vhdl代碼,使設(shè)計(jì)適合特定的應(yīng)用,主要有如下兩個(gè)方面需要修改。
● 寄存器模式
主狀態(tài)機(jī)會(huì)一直保持在寄存器模式,直到所有寄存器被配置完成。用戶可以指定哪些寄存器需要配置和寫(xiě)入數(shù)據(jù)。下面的代碼說(shuō)明如何修改vhdl代碼,以完成對(duì)addr3寄存器的寫(xiě)操作:
constant wr_addr3_en: booi_jean := true;
-- write/read to control register
constant aaddr3: std_logic_vector(7 downto 0) := '00000011';
--data to be written
constant data_wr_addr3: std_logic_vector(7 downteo 0): ='000001100';
變量wr_addr3_en可以設(shè)置為true或false,以使能或禁止對(duì)addr3的寫(xiě)操作。如果設(shè)計(jì)為true,則待寫(xiě)入此寄存器的數(shù)據(jù)也需要使用常數(shù)data _wr_addr3指定。在此例中,將“00000100”寫(xiě)入addr3。這個(gè)常數(shù)指定read back mode 1(msb先被讀回),同時(shí)設(shè)置cclk分頻系數(shù)為1。
寫(xiě)寄存器不僅要指定寄存器地址,而且要指定讀/寫(xiě)操作及數(shù)據(jù)字的大小。被寫(xiě)入控制寄存器的控制字包含指定先讀msb還是lsb、cclk分頻系數(shù)、通道的pga增益,以及使能數(shù)字i/o,更多特性可以參考adc數(shù)據(jù)手冊(cè)。
● 直接模式
一旦adc的所有寄存器被配置完成,adc可以工作在直接模式,此模式允許外部控制器來(lái)指定輸入通道及讀取轉(zhuǎn)換數(shù)據(jù)。此設(shè)計(jì)中的vhdl代碼允許設(shè)計(jì)者指定哪個(gè)輸入通道將會(huì)被讀取及多少個(gè)轉(zhuǎn)換結(jié)果將會(huì)被讀取,下面的代碼說(shuō)明如何對(duì)通道1進(jìn)行8次轉(zhuǎn)換并從通道1讀8次轉(zhuǎn)換結(jié)果:
在此設(shè)計(jì)中,多少個(gè)模擬量需要轉(zhuǎn)換由寫(xiě)入到sram中的轉(zhuǎn)換結(jié)果的數(shù)目決定。因此一旦sram的地址計(jì)數(shù)器達(dá)到sram_high,指定數(shù)目的轉(zhuǎn)換結(jié)果就已經(jīng)被存儲(chǔ)在sram中。通道使能由dm_sng_ln0_en控制,設(shè)為true,將允許該通道的轉(zhuǎn)換。常數(shù)dm_sng_ln0存儲(chǔ)通道ln0的直接命令字。
(4)移位控制邏輯
移位控制邏輯由主狀態(tài)機(jī)初始化,移位狀態(tài)機(jī)用來(lái)控制adc串行數(shù)據(jù)的移位輸出和輸入,包括寫(xiě)寄存器地址、寫(xiě)寄存器數(shù)據(jù)和寫(xiě)直接模式指令等。在直接模式轉(zhuǎn)換周期移入轉(zhuǎn)換結(jié)果。
移位狀態(tài)機(jī)控制邏輯如圖3所示,在go_shift(由主狀態(tài)機(jī)產(chǎn)生)的上升沿移位狀態(tài)機(jī)被激活,mode_flag為8位或16位操作標(biāo)志位。
移位狀態(tài)機(jī)產(chǎn)生sclk移位時(shí)鐘,并準(zhǔn)備好待發(fā)送的數(shù)據(jù)。在sc0狀態(tài)(sclk='0')時(shí),存放待發(fā)送數(shù)據(jù)的寄存器被使能;在sci狀態(tài)(sclk='1')時(shí),數(shù)據(jù)位被移出到din。
如圖3 移位狀態(tài)機(jī)控制邏輯
在直接模式轉(zhuǎn)換周期,移位狀態(tài)機(jī)在sclk的有效邊沿讀回dout信號(hào)線上的轉(zhuǎn)換結(jié)果。
歡迎轉(zhuǎn)載,信息來(lái)自維庫(kù)電子市場(chǎng)網(wǎng)(www.dzsc.com)
cpld控制adc初始化并讀回12位轉(zhuǎn)換結(jié)果,將其解串為16位存儲(chǔ)在sram中。此過(guò)程由兩個(gè)狀態(tài)機(jī)實(shí)現(xiàn),如圖1所示。
cpld配置adc內(nèi)部每一個(gè)寄存器,緊接著一個(gè)“direct mode”命令開(kāi)始對(duì)一個(gè)指定的輸入通道進(jìn)行一次轉(zhuǎn)換。cpld在讀入轉(zhuǎn)換結(jié)果之前,必須發(fā)送一個(gè)“直接模式命令”,讀入轉(zhuǎn)換結(jié)果。之后,將其解串并存儲(chǔ)在sram中。重復(fù)上面的操作,完成所有通道轉(zhuǎn)換。
(2)主狀態(tài)機(jī)
主狀態(tài)機(jī)如圖2所示。
如圖1 adc接口工作流程
如圖2 主狀態(tài)機(jī)
控制邏輯流程如下。
● 指定寄存器地址。
● 通過(guò)串行接口發(fā)送相應(yīng)的地址。
● 指定相應(yīng)寄存器的數(shù)據(jù)。
● 通過(guò)串行接口發(fā)送相應(yīng)寄存器的數(shù)據(jù)。
● 重復(fù)執(zhí)行前4步,直到所有寄存器被配置完成。
● 指定“直接模式指令”,開(kāi)始對(duì)一個(gè)選定的輸入通道進(jìn)行ad轉(zhuǎn)換。
● 讀入轉(zhuǎn)換結(jié)果,并將其寫(xiě)入sram。
● 重復(fù)執(zhí)行執(zhí)行上兩步,讀入指定輸入通道的所有轉(zhuǎn)換結(jié)果。
● 重復(fù)執(zhí)行前3步,完成所有輸入通道的轉(zhuǎn)換。
如表所示為主狀態(tài)機(jī)中每個(gè)狀態(tài)的詳細(xì)說(shuō)明。mode_flag="0"表明串行移位的數(shù)據(jù)為8位寬,它代表寄存器地址及待寫(xiě)入寄存器的數(shù)據(jù)或直接命令;mode_flag="1"表明串行移位的數(shù)據(jù)為16位寬,它代表adc轉(zhuǎn)換結(jié)果。其中有12位的adc轉(zhuǎn)換數(shù)據(jù),3個(gè)零位及一個(gè)溢出位。
如表 主狀態(tài)機(jī)中每個(gè)狀態(tài)的詳細(xì)說(shuō)明
(3)定制主狀態(tài)機(jī)
用戶可以通過(guò)修改主狀態(tài)機(jī)vhdl代碼,使設(shè)計(jì)適合特定的應(yīng)用,主要有如下兩個(gè)方面需要修改。
● 寄存器模式
主狀態(tài)機(jī)會(huì)一直保持在寄存器模式,直到所有寄存器被配置完成。用戶可以指定哪些寄存器需要配置和寫(xiě)入數(shù)據(jù)。下面的代碼說(shuō)明如何修改vhdl代碼,以完成對(duì)addr3寄存器的寫(xiě)操作:
constant wr_addr3_en: booi_jean := true;
-- write/read to control register
constant aaddr3: std_logic_vector(7 downto 0) := '00000011';
--data to be written
constant data_wr_addr3: std_logic_vector(7 downteo 0): ='000001100';
變量wr_addr3_en可以設(shè)置為true或false,以使能或禁止對(duì)addr3的寫(xiě)操作。如果設(shè)計(jì)為true,則待寫(xiě)入此寄存器的數(shù)據(jù)也需要使用常數(shù)data _wr_addr3指定。在此例中,將“00000100”寫(xiě)入addr3。這個(gè)常數(shù)指定read back mode 1(msb先被讀回),同時(shí)設(shè)置cclk分頻系數(shù)為1。
寫(xiě)寄存器不僅要指定寄存器地址,而且要指定讀/寫(xiě)操作及數(shù)據(jù)字的大小。被寫(xiě)入控制寄存器的控制字包含指定先讀msb還是lsb、cclk分頻系數(shù)、通道的pga增益,以及使能數(shù)字i/o,更多特性可以參考adc數(shù)據(jù)手冊(cè)。
● 直接模式
一旦adc的所有寄存器被配置完成,adc可以工作在直接模式,此模式允許外部控制器來(lái)指定輸入通道及讀取轉(zhuǎn)換數(shù)據(jù)。此設(shè)計(jì)中的vhdl代碼允許設(shè)計(jì)者指定哪個(gè)輸入通道將會(huì)被讀取及多少個(gè)轉(zhuǎn)換結(jié)果將會(huì)被讀取,下面的代碼說(shuō)明如何對(duì)通道1進(jìn)行8次轉(zhuǎn)換并從通道1讀8次轉(zhuǎn)換結(jié)果:
在此設(shè)計(jì)中,多少個(gè)模擬量需要轉(zhuǎn)換由寫(xiě)入到sram中的轉(zhuǎn)換結(jié)果的數(shù)目決定。因此一旦sram的地址計(jì)數(shù)器達(dá)到sram_high,指定數(shù)目的轉(zhuǎn)換結(jié)果就已經(jīng)被存儲(chǔ)在sram中。通道使能由dm_sng_ln0_en控制,設(shè)為true,將允許該通道的轉(zhuǎn)換。常數(shù)dm_sng_ln0存儲(chǔ)通道ln0的直接命令字。
(4)移位控制邏輯
移位控制邏輯由主狀態(tài)機(jī)初始化,移位狀態(tài)機(jī)用來(lái)控制adc串行數(shù)據(jù)的移位輸出和輸入,包括寫(xiě)寄存器地址、寫(xiě)寄存器數(shù)據(jù)和寫(xiě)直接模式指令等。在直接模式轉(zhuǎn)換周期移入轉(zhuǎn)換結(jié)果。
移位狀態(tài)機(jī)控制邏輯如圖3所示,在go_shift(由主狀態(tài)機(jī)產(chǎn)生)的上升沿移位狀態(tài)機(jī)被激活,mode_flag為8位或16位操作標(biāo)志位。
移位狀態(tài)機(jī)產(chǎn)生sclk移位時(shí)鐘,并準(zhǔn)備好待發(fā)送的數(shù)據(jù)。在sc0狀態(tài)(sclk='0')時(shí),存放待發(fā)送數(shù)據(jù)的寄存器被使能;在sci狀態(tài)(sclk='1')時(shí),數(shù)據(jù)位被移出到din。
如圖3 移位狀態(tài)機(jī)控制邏輯
在直接模式轉(zhuǎn)換周期,移位狀態(tài)機(jī)在sclk的有效邊沿讀回dout信號(hào)線上的轉(zhuǎn)換結(jié)果。
歡迎轉(zhuǎn)載,信息來(lái)自維庫(kù)電子市場(chǎng)網(wǎng)(www.dzsc.com)
熱門(mén)點(diǎn)擊
- Coo1Runner-Ⅱ器件實(shí)現(xiàn)IDE總線接
- Coo1Runner-Ⅱ器件實(shí)現(xiàn)雙向多路選擇
- Coo1Runner-Ⅱ器件I2C接口協(xié)議
- CoolRunner-II器件的ISO 78
- Coo1Runner-Ⅱ器件實(shí)現(xiàn)SRAM控制
- CoolRunner-Ⅱ器件的OL、SDA、
- CoolRunner-Ⅱ器件的I2C總線仲裁
- CoolRunner-II實(shí)現(xiàn)IrDA和UA
- CoolRunner-Ⅱ器件的I2C接口主狀
- CoolRunner-II CPLD設(shè)計(jì)
推薦技術(shù)資料
- DS2202型示波器試用
- 說(shuō)起數(shù)字示波器,普源算是國(guó)內(nèi)的老牌子了,F(xiàn)QP8N60... [詳細(xì)]
- MOSFET 電感單片降壓開(kāi)關(guān)模式變換器優(yōu)勢(shì)
- SiC MOSFET 和 IG
- 新型 電隔離無(wú)芯線性霍爾效應(yīng)電
- 業(yè)界超小絕對(duì)位置編碼器技術(shù)參數(shù)設(shè)計(jì)
- 高帶寬、更高分辨率磁角度傳感技術(shù)應(yīng)用探究
- MagAlpha 角度位置傳感
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究