傳統(tǒng)的數(shù)字電壓表設(shè)計(jì)通常以大規(guī)模ASIC(專用集成電路)為核心器件,并輔以少量中規(guī)模集成電路及顯示器件構(gòu)成。這種電壓表的設(shè)計(jì)簡單、精確度高,但是由于采用了ASIC器件使得它欠缺靈活性,其系統(tǒng)功能固定,難以更新擴(kuò)展。而應(yīng)用FPGA設(shè)計(jì)的電壓表,采用FPGA芯片控制通用A/D轉(zhuǎn)換器,可使速度、靈活性大大優(yōu)于通用數(shù)字電壓表。、
本文采用STEP-MAX10M08核心板和STEP Base Board V3.0底板來完成簡易電壓表設(shè)計(jì),我們將設(shè)計(jì)拆分成三個(gè)功能模塊實(shí)現(xiàn):
ADC081S101_driver: 驅(qū)動(dòng)SPI接口ADC芯片實(shí)現(xiàn)模擬電壓信號(hào)采集。
bin_to_bcd:將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成BCD碼的方法。
Segment_led:通過驅(qū)動(dòng)獨(dú)立式數(shù)碼管將電壓數(shù)據(jù)顯示出來。
Top-Down層次設(shè)計(jì)
模塊結(jié)構(gòu)設(shè)計(jì)
1. ADC介紹
模數(shù)轉(zhuǎn)換器即A/D轉(zhuǎn)換器,或簡稱ADC,通常是指一個(gè)將模擬信號(hào)轉(zhuǎn)變?yōu)閿?shù)字信號(hào)的電子元件。通常的模數(shù)轉(zhuǎn)換器是將一個(gè)輸入電壓信號(hào)轉(zhuǎn)換為一個(gè)輸出的數(shù)字信號(hào)。由于數(shù)字信號(hào)本身不具有實(shí)際意義,僅僅表示一個(gè)相對(duì)大小。故任何一個(gè)模數(shù)轉(zhuǎn)換器都需要一個(gè)參考模擬量作為轉(zhuǎn)換的標(biāo)準(zhǔn),比較常見的參考標(biāo)準(zhǔn)為最大的可轉(zhuǎn)換信號(hào)大小。而輸出的數(shù)字量則表示輸入信號(hào)相對(duì)于參考信號(hào)的大小。
模擬系統(tǒng)與數(shù)字系統(tǒng)結(jié)合模型
并行ADC和串行ADC模型
上圖兩個(gè)都是8位ADC模型,分辨率為 2的8次方等于256,即將Vref分成256份,能夠分辨的模擬步進(jìn)為Vref / 256,量化數(shù)據(jù)N = 256 * Vin / Vref 。
并行ADC與數(shù)字電路接口包含一根clk和8根data管腳,clk為芯片時(shí)鐘管腳,data為芯片數(shù)據(jù)管腳,每個(gè)clk周期從data管腳采集8bit的數(shù)據(jù),完成一次模數(shù)轉(zhuǎn)換,所以clk頻率等于采樣率。
串行ADC(以ADC081S101為例)與數(shù)字電路接口為三根線(cs,clk,din),兼容三線SPI總線,cs為芯片使能管腳,clk為芯片時(shí)鐘管腳,din為芯片數(shù)據(jù)管腳,當(dāng)ADC芯片使能時(shí)每個(gè)clk周期從din采集1bit的數(shù)據(jù),但是根據(jù)ADC081S101的時(shí)序,需要16個(gè)clk完成一次采樣,所以clk頻率至少等于采樣率的16倍。
2. ADC模塊電路連接
本設(shè)計(jì)所采用的STEP Base Board V3.0底板上的ADC模塊電路,其電路圖如下:
ADC模塊電路
FPGA直接連接ADC081S101芯片的控制端,ADC有6個(gè)管腳,3腳Vin為VCC和Vref功能復(fù)用,即Vin = VCC = Vref。ADC前端是運(yùn)放電路LMV721,運(yùn)放模塊為電壓跟隨電路,再往前端是一個(gè)跳冒排針,用來選擇ADC采樣信號(hào)的來源,當(dāng)短路帽將1、2腳短路時(shí),ADC采集電位計(jì)電壓,當(dāng)短路帽將2、3腳短路時(shí),ADC采射頻端子或P4排針信號(hào)。本設(shè)計(jì)我們是采集旋轉(zhuǎn)編碼器的電壓,所以需要用短路帽將1、2腳短路。
3. ADC模塊驅(qū)動(dòng)設(shè)計(jì)
ADC081S101串行通信時(shí)序如下圖:
注:
1. SCLK空閑時(shí)為高電平,CPOL = 1,上升沿(第二個(gè)邊沿)采樣,CPHA = 1,如果例化通用SPI核完成設(shè)計(jì),需要采用SPI的第四種工作模式。
2. CS信號(hào)拉低有效,經(jīng)過16個(gè)時(shí)鐘完成一次ADC轉(zhuǎn)換并采樣,采樣回來的數(shù)據(jù)前3位無效,接下來為DB7~DB0(有效數(shù)據(jù)),再接下來為無效數(shù)據(jù)。