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

?

基于FPGA的AD7606B控制器的設(shè)計(jì)與實(shí)現(xiàn)

2022-10-19 04:53:28張良浩孫瑞祥于安波
電子制作 2022年19期
關(guān)鍵詞:狀態(tài)機(jī)高電平寄存器

張良浩,孫瑞祥,于安波

(珠海格力電器股份有限公司,廣東珠海,519070)

0 引言

在電機(jī)驅(qū)動(dòng)應(yīng)用領(lǐng)域,常見的模擬信號采樣功能(ADC)通常集成在MCU中。片內(nèi)多通道ADC工作模式為分時(shí)循環(huán)采樣,因此無法滿足某些高速多路同步的采樣需求。在此類應(yīng)用中,片外ADC芯片(AD7606B)可以更好地提高采樣的同步性和準(zhǔn)確性。AD7606B與DSP28335內(nèi)置ADC的性能對比如表1所示[1~2]。AD7606B為同步采樣、并行傳輸模式;DSP28335內(nèi)置ADC為分時(shí)循環(huán)采樣,串行傳輸模式。在均采用8通道采樣的情況下,AD7606B的傳輸速率,比DSP28335內(nèi)置ADC的傳輸速率快約10倍。

表1 AD7606B與片內(nèi)ADC轉(zhuǎn)換模塊參數(shù)對比表

使用FPGA實(shí)現(xiàn)ADC芯片的控制功能,比起使用傳統(tǒng)MCU可以進(jìn)一步提升模擬數(shù)據(jù)的傳輸效率。使用傳統(tǒng)MCU對ADC芯片控制會(huì)占用MCU的主頻時(shí)鐘,模擬數(shù)據(jù)的傳輸效率會(huì)受到接口讀取效率和主頻處理效率的限制;而FPGA本身為可編程邏輯型器件,其對信號的處理是通過對每個(gè)基本邏輯單元(CLB)的構(gòu)建實(shí)現(xiàn),因此其信號處理的速度與并行度要更為出色[3]。

1 硬件連接及功能說明[4~5]

為了最大限度的提升本方案的數(shù)據(jù)傳輸效率和準(zhǔn)確性,AD7606B的設(shè)置采用并行接口+軟件模式。FPGA與AD7606B的硬件電路連接圖如圖1所示。

圖1 FPGA與AD7606B的硬件電路連接圖

其中,OS2~OS0為硬件模式下過采樣設(shè)置引腳,軟件模式下全部置1;PAR/SER SEL為并行/串行接口選擇輸入,并行接口需置0;STBY和RANGE在軟件模式下被忽略均置1;REF SELECT為內(nèi)部/外部基準(zhǔn)電壓選擇邏輯輸入,置1選擇并使能內(nèi)部基準(zhǔn)電壓模式。AD7606B的其余各芯片引腳的功能及描述如表2所示。

表2 AD7606B通信接口功能表

2 控制器狀態(tài)機(jī)設(shè)計(jì)

軟件模式下AD7606B的控制器分為兩類:一是ADC控制器,控制AD7606B的模擬數(shù)據(jù)采集及傳輸;二是寄存器控制器,用于FPGA對AD7606B的寄存器進(jìn)行讀寫操作。

■2.1 ADC控制器狀態(tài)機(jī)設(shè)計(jì)

并行接口模式下AD7606B的ADC讀取時(shí)序圖如圖2所示。當(dāng)AD7606B上電后,在10ms后,F(xiàn)PGA控制RESET信號上升。RESET保持至少3000ns高電平,即完全復(fù)位。復(fù)位完成后,經(jīng)過253ns后,AD7606B進(jìn)入空閑狀態(tài)。此部分屬于上電時(shí)序,不計(jì)入ADC控制器狀態(tài)機(jī)的設(shè)計(jì)中。

圖2 并行接口ADC讀取時(shí)序圖

在空閑狀態(tài)下,F(xiàn)PGA控制CONVEST發(fā)出上升沿,AD7606B的8個(gè)模擬采樣通道同時(shí)進(jìn)行采樣。CONVEST為轉(zhuǎn)換開始輸入信號,靜默時(shí)保持高電平信號。CONVEST上升沿信號后,AD7606B給FPGA反饋BUSY高電平信號。BUSY維持高電平的時(shí)間內(nèi),AD7606B的8通道執(zhí)行模擬數(shù)據(jù)轉(zhuǎn)換。轉(zhuǎn)換完成后,BUSY變?yōu)榈碗娖叫盘?,轉(zhuǎn)換時(shí)間在0.65~0.85μs之間。通常情況下,應(yīng)在AD7606B數(shù)據(jù)轉(zhuǎn)換完成后,F(xiàn)PGA再對AD7606B進(jìn)行數(shù)據(jù)讀取,即CSn信號拉低。

在數(shù)據(jù)讀取過程中,CSn保持低電平,F(xiàn)PGA通過依次發(fā)出8次RDn下降沿信號,AD7606B依次輸出從1通道到8通道的ADC數(shù)據(jù),RDn信號的周期需滿足最小保持時(shí)間。并且AD7606B在輸出1通道的轉(zhuǎn)換值時(shí),會(huì)發(fā)出高電平的FRSTDATA 信號(即1通道輸出標(biāo)志位),意在告知FPGA當(dāng)前輸出通道為1通道。完成8個(gè)通道的數(shù)據(jù)讀取后,片選信號(CSn)拉高。至此完成了一個(gè)完整的AD7606B數(shù)據(jù)轉(zhuǎn)換及讀取流程,AD7606B再次進(jìn)入空閑狀態(tài)。

由上述分析,ADC控制器狀態(tài)機(jī)可分為6個(gè)狀態(tài):IDLE、CONVST、BUSY、READ、READ_EDGE和RESPONSE,各狀態(tài)間的轉(zhuǎn)換關(guān)系如圖3所示[6]。

圖3 ADC模式狀態(tài)機(jī)轉(zhuǎn)換圖

IDLE:空閑狀態(tài)。所有信號及變量復(fù)位,得到控制指令,進(jìn)入轉(zhuǎn)換開始狀態(tài);

CONVST:轉(zhuǎn)換開始狀態(tài)。FPGA拉低CONVST信號,再拉高CONVST信號。得到AD7606B反饋的BUSY高電平信號,進(jìn)入忙碌狀態(tài);

BUSY:忙碌狀態(tài)。得到AD7606B反饋的BUSY低電平信號,進(jìn)入讀取狀態(tài);

READ:讀取狀態(tài)。FPGA拉低CSn和RDn信號,將16bit數(shù)據(jù)讀入數(shù)組中,并進(jìn)入讀取邊沿狀態(tài);

READ_EDGE:讀取邊沿狀態(tài)。FPGA拉高RDn信號,并邊沿計(jì)數(shù)加1。如果邊沿計(jì)數(shù)小于8,進(jìn)入讀取狀態(tài);如果邊沿計(jì)數(shù)為8,進(jìn)入應(yīng)答狀態(tài);

RESPONSE:應(yīng)答狀態(tài)。應(yīng)答狀態(tài)變量置1,并進(jìn)入空閑狀態(tài)。

■2.2 寄存器控制器狀態(tài)機(jī)設(shè)計(jì)

AD7606B默認(rèn)工作模式為ADC模式,需要通過讀任意寄存器操作進(jìn)入寄存器模式;當(dāng)需要恢復(fù)到ADC模式時(shí),需寫入地址0x00。AD7606B的寄存器讀寫時(shí)序圖如圖4所示,包括讀寄存器、寫寄存器和退出寄存器模式三部分。

圖4 并行接口寄存器讀寫時(shí)序圖

寄存器讀取通過兩幀執(zhí)行:首先將讀取命令發(fā)送到AD7606B,其次是AD7606B輸出寄存器內(nèi)容。

在第一幀中:

CSn和WRn置0;

位DB15置1;

位DB[14:8]為讀取寄存器地址;

位DB[7:0]被忽略。

在第二幀中:

CSn和RDn置0;

位DB15置0;

位DB[14:8]為被讀取寄存器地址;

位DB[7:0]為讀取數(shù)據(jù)。

寄存器寫命令通過單幀執(zhí)行:

CSn和WRn置0;

位DB15置0;

位DB[14:8]為寫入寄存器地址;

位DB[7:0]為寫入數(shù)據(jù)。

退出寄存器模式命令同寄存器寫入命令時(shí)序格式相同,需寫入地址0x00,數(shù)據(jù)被忽略。

由上述分析,寄存器控制器狀態(tài)機(jī)可分為10個(gè)狀態(tài):IDLE、ADDRESS、ADDRESS_EDGE、READ、READ_EDGE、WRITE、WRITE_EDGE、EXIT、EXIT_EDGE和RESPONSE。各狀態(tài)間的轉(zhuǎn)換關(guān)系如圖5所示。

圖5 寄存器模式狀態(tài)機(jī)轉(zhuǎn)換圖

IDLE:空閑狀態(tài)。所有信號及變量復(fù)位,得到控制指令,進(jìn)入寄存器讀寫狀態(tài);

ADDRESS:地址狀態(tài)。FPGA拉低CSn和WRn信號,并對數(shù)據(jù)線寫入{1'b1,address[6:0], 8'hxx},進(jìn)入地址邊沿狀態(tài);

ADDRESS_EDGE:地 址邊沿狀態(tài)。FPGA拉高WRn信號,并地址邊沿計(jì)數(shù)加1,進(jìn)入讀取狀態(tài);

READ:讀取狀態(tài)。FPGA拉低RDn信號,AD7606B反饋16位并行數(shù)據(jù)。FPGA讀取其中低8位所讀寄存器數(shù)據(jù),進(jìn)入讀取邊沿狀態(tài);

READ_EDGE:讀 取 邊沿 狀 態(tài)。FPGA拉 高RDn信號。如果地址邊沿計(jì)數(shù)小于n1,進(jìn)入地址狀態(tài);如果等于n1,則進(jìn)入寫入狀態(tài);

WRITE:寫 入 狀 態(tài)。FPGA拉 低WRn信號,并對數(shù)據(jù)線寫入{1'b0,address[6:0],data[7:0]},進(jìn)入寫入邊沿狀態(tài);

WRITE_EDGE:寫入邊沿狀態(tài)。FPGA拉高WRn信號,并寫入邊沿計(jì)數(shù)加1。如果寫入邊沿計(jì)數(shù)小于n2,進(jìn)入寫入狀態(tài);如果邊沿計(jì)數(shù)為n2,進(jìn)入退出狀態(tài);

EXIT:退出狀態(tài)。FPGA拉低WRn信號,并對數(shù)據(jù)線寫入{1'b0,7'h00,8'hxx},進(jìn)入退出邊沿狀態(tài);

EXIT_EDGE:退 出 邊 沿 狀 態(tài)。FPGA拉高WRn信號,進(jìn)入應(yīng)答狀態(tài);

RESPONSE:應(yīng)答狀態(tài)。應(yīng)答狀態(tài)變量置1,并進(jìn)入空閑狀態(tài)。

3 測試驗(yàn)證

本文FPGA開發(fā)使用的Quartus開發(fā)環(huán)境,其內(nèi)部集成了SignalTap II邏輯分析儀,用于分析數(shù)據(jù)變化。SignalTap II是利用FPGA內(nèi)部的邏輯單元和RAM資源實(shí)時(shí)捕捉和顯示信號[7]。與Modelsim仿真不同在于,SignalTap II需要與硬件結(jié)合,程序在FPGA中運(yùn)行時(shí)實(shí)時(shí)顯示FPGA各引腳及內(nèi)部信號的測試數(shù)據(jù)。本文通過SignalTap II來測試所述狀態(tài)機(jī)的工作波形,進(jìn)而驗(yàn)證狀態(tài)機(jī)設(shè)計(jì)的正確性。

■3.1 ADC模式狀態(tài)機(jī)驗(yàn)證

FPGA在ADC模式下的測試信號波形如圖6、圖7所示。可以看出各控制信號線和數(shù)據(jù)信號線的工作時(shí)序與圖2相一致。在數(shù)據(jù)讀取段的局部波形圖7中,可以更加清楚地看到各信號間的時(shí)間間隔。程序中所用時(shí)鐘為50MHz,由此計(jì)算出的各信號的建立時(shí)間、保持時(shí)間等時(shí)間間隔均滿足最小時(shí)限。

圖6 ADC模式下測試信號波形圖

圖7 ADC模式下測試信號局部波形圖

■3.2 寄存器模式狀態(tài)機(jī)驗(yàn)證

寄存器模式狀態(tài)機(jī)的測試波形如圖8所示。測試波形由一次讀取、一次寫入和退出寄存器三部分組成,各控制信號和數(shù)據(jù)信號的時(shí)序均與圖4一致。讀取寄存器地址0x02,讀取數(shù)據(jù)為0x08,為該寄存器的默認(rèn)數(shù)據(jù)。寫入寄存器地址0x03,寫入數(shù)據(jù)為0x22,該數(shù)據(jù)設(shè)置了AD7606B的通道1、2的輸入范圍為±10V。退出寄存器地址0x00,數(shù)據(jù)位忽略。

圖8 寄存器下測試信號波形圖

4 結(jié)束語

本文通過對AD7606B的并行接口通信時(shí)序分析和狀態(tài)機(jī)的設(shè)計(jì),實(shí)現(xiàn)了AD7606B控制器功能。經(jīng)過對通信關(guān)鍵信號測試,結(jié)果符合設(shè)計(jì)預(yù)期。本文中所設(shè)計(jì)的AD7606B控制器可以滿足各類電機(jī)控制所需的模擬信號采集需求,并且易于廣泛移植。

猜你喜歡
狀態(tài)機(jī)高電平寄存器
一種基于FPGA的PWM防錯(cuò)輸出控制電路
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
基于有限狀態(tài)機(jī)的交會(huì)對接飛行任務(wù)規(guī)劃方法
TS-03C全固態(tài)PDM中波發(fā)射機(jī)開關(guān)機(jī)控制電路原理及故障分析
科技傳播(2019年15期)2019-08-22 08:07:44
分簇結(jié)構(gòu)向量寄存器分配策略研究*
DM 50KW中波廣播發(fā)射機(jī)欠推動(dòng)故障分析
PDM 1kW中波廣播發(fā)射機(jī)保護(hù)電路分析
高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
FPGA設(shè)計(jì)中狀態(tài)機(jī)安全性研究
基于反熔絲FPGA的有限狀態(tài)機(jī)加固設(shè)計(jì)
白水县| 襄樊市| 永兴县| 土默特左旗| 南通市| 陇南市| 会宁县| 太白县| 五华县| 巴林右旗| 神农架林区| 容城县| 方城县| 定西市| 中牟县| 曲阳县| 右玉县| 句容市| 合江县| 凤山市| 临西县| 阜城县| 敦化市| 临颍县| 吉水县| 桐柏县| 武邑县| 澄城县| 淮南市| 台东市| 连云港市| 承德县| 武穴市| 综艺| 鹿邑县| 怀安县| 双鸭山市| 巨鹿县| 新巴尔虎左旗| 扶绥县| 望江县|