<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于FPGA的簡(jiǎn)易電壓表設計

基于FPGA的簡(jiǎn)易電壓表設計

作者: 時(shí)間:2018-09-13 來(lái)源:網(wǎng)絡(luò ) 收藏

  傳統的數字電壓表設計通常以大規模(專(zhuān)用集成電路)為核心器件,并輔以少量中規模集成電路及顯示器件構成。這種電壓表的設計簡(jiǎn)單、精確度高,但是由于采用了器件使得它欠缺靈活性,其系統功能固定,難以更新擴展。而應用設計的電壓表,采用芯片控制通用A/D轉換器,可使速度、靈活性大大優(yōu)于通用數字電壓表。、

本文引用地址:http://dyxdggzs.com/article/201809/391848.htm

  本文采用STEP-MAX10M08核心板和STEP Base Board V3.0底板來(lái)完成簡(jiǎn)易電壓表設計,我們將設計拆分成三個(gè)功能模塊實(shí)現:

  ADC081S101_driver: 驅動(dòng)SPI接口A(yíng)DC芯片實(shí)現模擬電壓信號采集。

  bin_to_bcd:將二進(jìn)制數據轉換成BCD碼的方法。

  Segment_led:通過(guò)驅動(dòng)獨立式數碼管將電壓數據顯示出來(lái)。

  Top-Down層次設計

  模塊結構設計

  1. ADC介紹

  模數轉換器即A/D轉換器,或簡(jiǎn)稱(chēng)ADC,通常是指一個(gè)將模擬信號轉變?yōu)閿底中盘柕碾娮釉?。通常的模數轉換器是將一個(gè)輸入電壓信號轉換為一個(gè)輸出的數字信號。由于數字信號本身不具有實(shí)際意義,僅僅表示一個(gè)相對大小。故任何一個(gè)模數轉換器都需要一個(gè)參考模擬量作為轉換的標準,比較常見(jiàn)的參考標準為最大的可轉換信號大小。而輸出的數字量則表示輸入信號相對于參考信號的大小。

  模擬系統與數字系統結合模型

  并行ADC和串行ADC模型

  上圖兩個(gè)都是8位ADC模型,分辨率為 2的8次方等于256,即將Vref分成256份,能夠分辨的模擬步進(jìn)為Vref / 256,量化數據N = 256 * Vin / Vref 。

  并行ADC與數字電路接口包含一根clk和8根data管腳,clk為芯片時(shí)鐘管腳,data為芯片數據管腳,每個(gè)clk周期從data管腳采集8bit的數據,完成一次模數轉換,所以clk頻率等于采樣率。

  串行ADC(以ADC081S101為例)與數字電路接口為三根線(xiàn)(cs,clk,din),兼容三線(xiàn)SPI總線(xiàn),cs為芯片使能管腳,clk為芯片時(shí)鐘管腳,din為芯片數據管腳,當ADC芯片使能時(shí)每個(gè)clk周期從din采集1bit的數據,但是根據ADC081S101的時(shí)序,需要16個(gè)clk完成一次采樣,所以clk頻率至少等于采樣率的16倍。

  2. ADC模塊電路連接

  本設計所采用的STEP Base Board V3.0底板上的ADC模塊電路,其電路圖如下:

  ADC模塊電路

  直接連接ADC081S101芯片的控制端,ADC有6個(gè)管腳,3腳Vin為VCC和Vref功能復用,即Vin = VCC = Vref。ADC前端是運放電路LMV721,運放模塊為電壓跟隨電路,再往前端是一個(gè)跳冒排針,用來(lái)選擇ADC采樣信號的來(lái)源,當短路帽將1、2腳短路時(shí),ADC采集電位計電壓,當短路帽將2、3腳短路時(shí),ADC采射頻端子或P4排針信號。本設計我們是采集旋轉編碼器的電壓,所以需要用短路帽將1、2腳短路。

  3. ADC模塊驅動(dòng)設計

  ADC081S101串行通信時(shí)序如下圖:

  注:

  1. SCLK空閑時(shí)為高電平,CPOL = 1,上升沿(第二個(gè)邊沿)采樣,CPHA = 1,如果例化通用SPI核完成設計,需要采用SPI的第四種工作模式。

  2. CS信號拉低有效,經(jīng)過(guò)16個(gè)時(shí)鐘完成一次ADC轉換并采樣,采樣回來(lái)的數據前3位無(wú)效,接下來(lái)為DB7~DB0(有效數據),再接下來(lái)為無(wú)效數據。

  針對ADC081S101時(shí)序,我們用Verilog設計一個(gè)計數器,當計數器值不同時(shí)完成不同操作,實(shí)現一次ADC采樣,程序實(shí)現如下:

  到這我們就完成了串行ADC芯片ADC081S101的驅動(dòng)設計,整個(gè)采樣周期用了35個(gè)系統時(shí)鐘,如果我們采用12MHz時(shí)鐘作為該模塊系統時(shí)鐘,采樣率Fs = 12M/35 = 343Ksps,ADC主頻Fsclk = 12 MHz /2 = 6MHz。

  ADC081S101主頻及采樣率要求如下,按照要求我們當前的主頻和采樣率不足,所以在使用該模塊時(shí),可以使用更高的時(shí)鐘(比如24MHz)以達到芯片的要求

  注:時(shí)鐘頻率Fsclk,最小值為10MHz,最大值為20MHz,采樣率在500Ksps~1Msps

  模塊接口如下:clk和rst_n為系統時(shí)鐘及復位,adc_cs,adc_clk和adc_dat為ADC控制管腳,adc_data為ADC采樣數據,adc_done產(chǎn)生一個(gè)脈沖對應adc_data得到一個(gè)有效數據

  4. 時(shí)鐘獲取

  因為需要更高的時(shí)鐘供ADC模塊使用,我們例化pll核得到24MHz時(shí)鐘,同時(shí)例化pll模塊和ADC081S101_driver模塊,并將pll的輸出與ADC081S101_driver模塊的clk連線(xiàn)。

  Pll模塊和ADC081S101_driver模塊的連接程序實(shí)現如下:

  5. 采樣結果顯示

  假設ADC模擬輸入電壓為3.3V,理論上我們得到的采樣數據adc_data應該為8’hff,而電壓表最終顯示在數碼管上的數據應該為3.3,我們如何將8’hff轉換成可以顯示的3.3數據呢?這就設計到ADC量化數據的逆向運算了。

  我們知道量化運算 N = 256 * Vin / Vref,

  那么逆向運算為Vin = N * Vref / 256,其中Vref = 3.3V,所以Vin = N * 0.0129

  所以我們需要用FPGA計算adc_data * 0.0129的結果,然后為了使用十進(jìn)制的顯示,先將結果進(jìn)行BCD轉碼,然后顯示在數碼管上。

  將ADC采樣數據按規則轉換為電壓數據(乘以0.0129),這里我們直接乘以129,得到的數據經(jīng)過(guò)BCD轉碼后小數點(diǎn)左移4位即可,程序實(shí)現如下:

  二進(jìn)制轉BCD碼程序實(shí)現如下:

  最后得到20位的數據輸出,每4位表示一個(gè)BCD碼,所以有5位有效數據,這里我們還需要將小數點(diǎn)左移4位,計算出來(lái)的數應該是X.XXXX伏特,1個(gè)整數位和4個(gè)小數位,核心板上只有兩個(gè)數碼管,取最高的兩個(gè)BCD碼顯示到數碼管X.X伏特,個(gè)位小數點(diǎn)點(diǎn)亮,分位小數點(diǎn)熄滅,程序實(shí)現如下:

  綜合后的設計框圖如下:

  RTL設計框圖

  到這一步就完成了基于FPGA的簡(jiǎn)易電壓表設計。將程序下載到FPGA中,STEP Base Board V3.0底板上P3接口的1、2腳短路,旋轉底板右上角的電位計,觀(guān)察核心板數碼管變化,也可同時(shí)用萬(wàn)用表測量P3短路處的電壓,與數碼管上的結果對比。

  實(shí)物圖:



關(guān)鍵詞: FPGA ASIC

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>