国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于VerilogHDL的LTC2308控制器設(shè)計

2019-09-10 07:22周俊秦工
荊楚理工學(xué)院學(xué)報 2019年6期

周俊 秦工

摘要:根據(jù)AD轉(zhuǎn)換芯片LTC2308的典型工作時序,針對應(yīng)用設(shè)計了有限狀態(tài)機(jī),給出了用Verilog HDL實現(xiàn)其控制器的具體過程與方法,最后在ModelSim軟件下進(jìn)行了仿真并利用FPGA開發(fā)板DE10-Nano予以硬件實現(xiàn)。該控制器具有對LTC2308任一單通道快速訪問及多通道自動刷新訪問兩種功能并能方便地和常用FPGA總線互連,適用于眾多現(xiàn)實應(yīng)用場景,充分發(fā)揮了AD轉(zhuǎn)換器的性能,體現(xiàn)了FPGA的優(yōu)點(diǎn)和靈活性。

關(guān)鍵詞:LTC2308;AD轉(zhuǎn)換器;Verilog HDL

中圖分類號:TP331.2 文獻(xiàn)標(biāo)志碼:A 文章編號:1008-4657(2019)06-0009-05

0 引言

LTC2308是亞德諾半導(dǎo)體公司(Analog Devices Inc,ADI)的一款低噪聲12位高精度逐次逼近型模數(shù)轉(zhuǎn)換芯片(Analog to Digital Converter,ADC),最多可擁有8個模擬輸入通道,具有高達(dá)500 kSPS的采樣速率以及一個兼容串行外設(shè)接口(Serial Peripheral Interface,SPI)。芯片內(nèi)置有基準(zhǔn)電壓和一個可以減小共模噪聲的全差分采樣保持電路[1]。較低的功耗以及小巧的封裝使其成為眾多便攜式設(shè)備、系統(tǒng)設(shè)計、FPGA開發(fā)板的ADC轉(zhuǎn)換首選芯片。比如,業(yè)界被廣泛使用的FPGA開發(fā)板DE10-Nano,由友晶公司為Intel Cyclone V FPGA芯片5CSEBA6U23I7NDK打造,即采用LTC2308作為標(biāo)準(zhǔn)配置[2]。另外,ADI公司自己推出的該芯片評估板DC1186A也被廣泛用于各種開發(fā)系統(tǒng),包括Xilinx和Intel公司的各種FPGA芯片開發(fā)板以及單片機(jī)、Arduino、樹莓派(Raspberry)等。

ADC轉(zhuǎn)換器及其控制電路作為聯(lián)系模擬信號和數(shù)字系統(tǒng)必不可少的部分,其重要性已經(jīng)不言而喻。利用硬件描述語言(Hardware Description Language,HDL)來設(shè)計ADC的控制系統(tǒng),不但可以更容易了解ADC芯片的時序和控制方法,還能最大限度的發(fā)揮其性能,并方便于各種FPGA芯片上移植應(yīng)用。本文通過對LTC2308的具體時序特點(diǎn)進(jìn)行分析,采用Verilog HDL基于行為描述設(shè)計其控制器,并進(jìn)一步以Intel的Avalon總線為例,封裝成基于Memory Mapped的IP核,方便系統(tǒng)集成使用[3]。

1 LTC2308芯片及其時序特點(diǎn)

LTC2308的基本應(yīng)用電路如圖1所示[1],包含一個8選1模擬通道并能隨時配置成為單端、差分式通道,以及單極性、雙極性通道,通過四線式SPI/MICROWIRETM兼容串行接口與其他數(shù)字接口電路相連。當(dāng)為單端輸入時,每個通道相對于COM端,單極性狀態(tài)下可以輸入0~4.096 V的范圍,雙極性為± 2.048 V的范圍,其中,負(fù)數(shù)是以2的補(bǔ)碼形式表示。當(dāng)為雙端輸入時,CH0與CH1、CH2與CH3、CH4與CH5、CH6與CH7可以分別構(gòu)成差分對信號,能同時對雙端信號進(jìn)行采樣以減小共模干擾。當(dāng)輸入源的阻抗較大時,需要的獲取信號時間也會相應(yīng)增多。

由于LTC2308采用的是SPI兼容信號與其他數(shù)字系統(tǒng)相連,所以如果支持SPI協(xié)議的設(shè)備與其進(jìn)行通信并不復(fù)雜,但是要想充分發(fā)揮其性能特點(diǎn),就需要具體分析其時序和功能,并針對性地實現(xiàn)對其控制。這里采用Verilog HDL在CPLD或FPGA上予以實現(xiàn),不失為最佳控制方式之一,而且還具有更大的靈活性[4]。

圖2所示為LTC2308的典型時序圖,CONVST信號的上跳沿將會啟動轉(zhuǎn)換,經(jīng)過tCONV時間后轉(zhuǎn)換完畢。tCONV典型值為1.3 μs,最大為1.6 μs[1],圖2中CONVST信號在轉(zhuǎn)換完畢后經(jīng)過至少20 ns之后迅速變?yōu)榈碗娖绞菫榱双@得更高性能。CONVST信號在40 ns內(nèi)或者轉(zhuǎn)換結(jié)束后馬上回到低電平,能讓芯片一直保持上電狀態(tài)。當(dāng)CONVST一直保持高電平時芯片會進(jìn)入NAP或SLEEP節(jié)能狀態(tài),當(dāng)在SLEEP狀態(tài)時,需要200 ms來喚醒芯片。

轉(zhuǎn)換完畢后,當(dāng)CONVST變?yōu)榈蜁r,轉(zhuǎn)換結(jié)果的最高位會出現(xiàn)在SDO引腳上。此時在SCK脈沖的上跳沿時將對LTC2308的控制數(shù)據(jù)通過SDI串行寫入到芯片內(nèi),同時下跳沿時,依次由高到低輸出12位轉(zhuǎn)換結(jié)果,值得注意的是此時輸出是上一次控制數(shù)據(jù)狀態(tài)下的輸出結(jié)果。SCK脈沖時鐘最大為40 MHz,從時序圖可以看到,如果設(shè)計控制器采樣SDO的數(shù)據(jù)串行送入移位寄存器的最佳時刻也是在SCK上跳沿。

LTC控制數(shù)據(jù)為6位,由高到底依次為:S/D、O/S、S1、S0、UNI、SLP。S/D控制芯片是單端還是雙端差分式模式。O/S在差分方式下,控制兩個信號的正負(fù)極性,比如,當(dāng)其為0時,CH0為+端,CH1為-端,當(dāng)其為1時,則CH0為-端,CH1為+端。在單端模式下,O/S則和S1、S0一起構(gòu)成通道選擇信號。在雙端模式下,S1、S0構(gòu)成2位通道選擇信號,正好可以選擇四組差分通道。在單端模式下,S1、S0、O/S形成3位地址,可以選擇8個通道。UNI為極性控制信號,其為1時,輸出單極性信號,為0時,輸出補(bǔ)碼形式的雙極性信號。SLP則是控制芯片是進(jìn)入之前提到的SLEEP還是NAP狀態(tài)。

在傳輸完第6位控制字之后,芯片還需要至少240 ns[1]的tACQ的獲取時間之后才能再次將CONVST拉高來啟動下一次轉(zhuǎn)換。

以上即為LTC2308啟動一次轉(zhuǎn)換的基本過程,我們可以根據(jù)具體時序,結(jié)合芯片應(yīng)用時的功能需求,設(shè)計控制器的有限狀態(tài)機(jī)圖(Finite State Machine,F(xiàn)SM),編寫Verilog HDL代碼予以實現(xiàn)[5]。

2 Verilog HDL實現(xiàn)

應(yīng)用硬件描述語言在FPGA上定制實現(xiàn)LTC2308控制器時,我們必須根據(jù)其應(yīng)用功能做以下考慮:

(1)LTC2308的8個模擬輸入通道是通過多路選擇器來復(fù)用其500 kSPS的高速轉(zhuǎn)換器的,當(dāng)同時使用8個通道時,分在每個通道上的采樣速率只能達(dá)到最高轉(zhuǎn)換速率的1/8。在許多應(yīng)用場合下,我們并不需要始終都同時使用8個通道,因此為了達(dá)到最佳性能需要考慮在Verilog HDL程序中能方便的配置成單通道或者不同通道數(shù)進(jìn)行使用。

(2)每次進(jìn)行ADC轉(zhuǎn)換時,都是基于前一次寫入的控制字來進(jìn)行的,所以在多通道和單通道應(yīng)用中獲取通道地址及對應(yīng)結(jié)果的方法稍有不同。另外,在系統(tǒng)復(fù)位之后,第一次啟動轉(zhuǎn)換的同時獲取的數(shù)據(jù),因為沒有控制字的控制,往往是無效的。

(3)當(dāng)轉(zhuǎn)換結(jié)束以后,應(yīng)該能夠給出指示信號供其他數(shù)字系統(tǒng)進(jìn)行中斷或者查詢使用。

基于這些考慮我們設(shè)計了Verilog HDL模塊ltc2308_ctrl,其端口及說明如表1所示,以及有限狀態(tài)機(jī)圖如圖3所示。狀態(tài)圖共設(shè)置了5個基本狀態(tài),分別為:初始狀態(tài)initState、轉(zhuǎn)換等待狀態(tài)tconvWaitState、傳輸狀態(tài)transState、數(shù)據(jù)獲取等待狀態(tài)tacqWaitState、結(jié)束狀態(tài)doneState。

針對狀態(tài)機(jī)進(jìn)行Verilog HDL編程時,按照一般FSM編程原則,將狀態(tài)轉(zhuǎn)換邏輯以及用于tconv、tacq定時的寄存器tconv_counter、tacq_counter邏輯、用于sck和通道循環(huán)的計數(shù)寄存器sck_counter、loop_counter邏輯等分別放在不同的always模塊來實現(xiàn)[4]。根據(jù)系統(tǒng)時鐘以及定時和計數(shù)需求確定寄存器位數(shù)和初值及計數(shù)終值。另外,設(shè)置TotalChannel參數(shù)方便程序針對不同應(yīng)用場景下需求的通道數(shù)不同來進(jìn)行修改。

3 系統(tǒng)仿真及Avalon MM總線封裝

最終,我們硬件上選定Intel的Cyclone V FPGA芯片,采用友晶的DE10-Nano開發(fā)平臺,結(jié)合Quartus Prime軟件,用Verilog HDL實現(xiàn)了該控制器。圖4為使用Modelsim軟件進(jìn)行仿真的部分結(jié)果,在圖中,通過addr_sel信號選擇通道1,autorun為低電平,為了簡化,假定LTC2308的SDO輸出為全1或全0,可以看到在transState狀態(tài)下,產(chǎn)生了12個sck脈沖,此時sdi輸出了6位二進(jìn)制控制字110 010,并在第11個sck下跳沿后,reading1上獲得12位輸出4 095,緊接著下一次轉(zhuǎn)換輸出為0。

為了方便用Quartus Prime的Platform Designer將LTC2308和CPU連接起來,以上用Verilog HDL設(shè)計的控制器可以很方便的進(jìn)一步用Verilog HDL封裝成Avalon總線形式[3]。此時,控制器應(yīng)該在CPU指令的控制之下才去啟動一次轉(zhuǎn)換,所以需要增加一個start啟動信號,針對圖3所示有限狀態(tài)機(jī)圖也需要稍作調(diào)整,在initState狀態(tài)下,只有start信號有效才會進(jìn)入轉(zhuǎn)換狀態(tài),在轉(zhuǎn)換結(jié)束后,出現(xiàn)done信號時,start恢復(fù)為0,下一次進(jìn)行讀寫時,再次置位start信號。在進(jìn)行Avalon MM總線封裝時,主要是參考Avalon MM總線信號及時序標(biāo)準(zhǔn),設(shè)計好address、read、readdata、write、writedata、waitrequest等信號即可[3]。另外在執(zhí)行寫入操作時,可以通過寫入的數(shù)據(jù)來設(shè)置標(biāo)志寄存器決定控制器是否進(jìn)入到autorun模式。

圖5為在DE10-Nano開發(fā)板上,通過FPGA內(nèi)置軟核CPU NIOS II控制,加載用Verilog HDL封裝的IP核的演示效果,液晶屏上實時顯示的通道1數(shù)據(jù)來自開發(fā)板自身提供的3.3 V電壓,顯示值為3 348 mV,右下角8位LED顯示的是12位轉(zhuǎn)換結(jié)果對應(yīng)高8位二進(jìn)制數(shù)11 010 001。

4 結(jié)論

ADC轉(zhuǎn)換器作為電子系統(tǒng)設(shè)計中不可或缺的一部分,為了可靠的獲取其數(shù)據(jù),充分的發(fā)揮其性能,ADC轉(zhuǎn)換控制器的設(shè)計非常重要。LTC2308是一款性能非常強(qiáng)大的8通道ADC轉(zhuǎn)換芯片,采用Verilog HDL來設(shè)計其控制器,不但能充分發(fā)揮其性能,并具有非常強(qiáng)的靈活性,還能很方便地封裝成各種標(biāo)準(zhǔn)總線接口IP核供CPU使用。通過仔細(xì)分析時序圖,考慮應(yīng)用場景,設(shè)計好有限狀態(tài)機(jī)轉(zhuǎn)換圖,能使得用Verilog HDL開發(fā)ADC控制器變得比較容易。

參考文獻(xiàn):

[1] ADI.LTC2308 Datasheet[A/OL].(2008-10-18)[2019-11-06].https://www.analog.com/media/en/technical-documentation/data-sheets/2308fc.pdf.

[2] Terasic Inc.DE10-Nano User Manual[A/OL].(2018-11-15)[2019-11-06].http://www.terasic.com.cn/cgi-bin/page/archive_download.pl?Language=China&No=1048&FID=0898a024b81caf1f3a95b241eeeb6f66.

[3] Intel.Avalon Interface Specifications[A/OL].(2018-09-26)[2019-11-06].https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/manual/mnl_avalon_spec.pdf.

[4] Tatiana M L D R,Luz N O M,Antonio G J G.Implementation of the Communication Protocols SPI and I2C Using a FPGA by the HDL-Verilog Language[J].2014,75:31-41.

[5] 王金明.數(shù)字系統(tǒng)設(shè)計與Verilog HDL[M].第6版.北京:電子工業(yè)出版社,2016:195-214.

[責(zé)任編輯:鄭筆耕]

南岸区| 明水县| 象山县| 乌拉特前旗| 丰镇市| 彭州市| 北安市| 祁东县| 云南省| 兴和县| 安吉县| 铜梁县| 彭山县| 佛坪县| 望都县| 奉化市| 太和县| 萨迦县| 吉木乃县| 桐乡市| 竹北市| 南华县| 合江县| 兖州市| 开化县| 江华| 岳西县| 永和县| 清远市| 湘西| 巴彦县| 双牌县| 青河县| 英山县| 临泽县| 成武县| 滕州市| 渝中区| 永福县| 汶上县| 漳州市|