付費下載
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于XilinxFPGA的通用信號采集器上一篇寫了基于XilinxFPGA的通用信號發(fā)生器的案例,反響比較好,很多朋友和我探討相關的技術,其中就涉及到信號的采集,為了使該文更有血有肉,我在寫一篇基于XilinxFPGA的通用信號采集器,望能形成呼應,以解答大家的疑問。目的:1.通過設計實現(xiàn)信號采集與分析,掌握組合邏輯設計方法;2.通過設計實現(xiàn)信號的采集與分析,掌握信號采集原理。原理:利用FPGA芯片,用verilog語言編寫邏輯,控制AD0809進行AD轉換。AD0809是帶有8位AD轉換器、8路多路開關以及微處理機兼容的控制邏輯的CMOS組件,它是逐次逼近式的AD轉換器。AD0809的內部結構圖如下:由上圖可知,多路開關可選通8個模擬通道,允許8路模擬量分時輸入,共用AD轉換器進行轉換,三態(tài)輸出鎖存器用于鎖存AD轉換完成后的數(shù)字量,當OE為高時才可以從鎖存器取出轉換后的數(shù)據(jù)。通道選擇如下圖所示:START為轉換啟動信號。當START上跳沿時,所有內部寄存器清零;下跳沿時,開始進行A/D轉換;在轉換期間,START應保持低電平。EOC為轉換結束信號。當EOC為高電平時,表明轉換結束;否則,表明正在進行A/D轉換。OE為輸出允許信號,用于控制三條輸出鎖存器向單片機輸出轉換得到的數(shù)據(jù)。OE=1,輸出轉換得到的數(shù)據(jù);OE=0,輸出數(shù)據(jù)線呈高阻狀態(tài)。時序如下圖所示:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254源代碼1.Verilog源代碼,dataCollect.vmoduledataCollect(sysclk,rst,adda,addb,addc,start,oe,
datain,led_sel,led_seg);
inputsysclk,rst;
inputwire[7:0]datain;
outputregadda,addb,addc,start,oe;
outputreg[3:0]led_sel;
outputreg[7:0]led_seg;
reg[3:0]counter1;
reg[7:0]readdata;
reg[9:0]counter2;
reg[15:0]sum;
reg[7:0]averdata;
reg[7:0]temp;
reg[3:0]dataout1,dataout2,dataout3;
reg[3:0]counter3;
parameterZERO=8'b11111100,ONE=8'b01100000,TWO=8'b11011010;
parameterTHREE=8'b11110010,FOUR=8'b01100110;
parameterFIVE=8'b10110110,SIX=8'b10111110,SEVEN=8'b11100000;
parameterEIGHT=8'b11111110,NINE=8'b11110110,BLANK=8'b00000000;
always@(posedgesysclkornegedgerst)
begin
if(!rst)
begin
adda=0;
addb=0;
addc=0;
oe=1;
counter1=0;
end
else
begin
counter1=counter1+1;
case(counter1)
3:start=0;
4:start=1;
5:start=0;
10:readdata=datain;
15:counter1=0;
default:counter1=counter1;
endcase
end
end
always@(posedgesysclkornegedgerst)
begin
if(!rst)
begin
counter2=0;
sum=0;
averdata=0;
end
else
begin
counter2=counter2+1;
if((counter2%16)==0)
sum=sum+readdata;
elseif(counter2>512)
begin
averdata=sum/32;
sum=0;
counter2=0;
end
end
end
always@(averdata)
begin
temp=averdata;
if(temp>199)
dataout3=2;
elseif(temp>99)
dataout3=1;
else
dataout3=0;
temp=temp-dataout3*100;
if(temp>89)
dataout2=9;
elseif(temp>79)
dataout2=8;
elseif(temp>69)
dataout2=7;
elseif(temp>59)
dataout2=6;
elseif(temp>49)
dataout2=5;
elseif(temp>39)
dataout2=4;
elseif(temp>29)
dataout2=3;
elseif(temp>19)
dataout2=2;
elseif(temp>9)
dataout2=1;
else
dataout2=0;
temp=temp-dataout2*10;
dataout1=temp;
if((dataout3==0)&&(dataout2==0))
begin
dataout3=10;
dataout2=10;
end
elseif(dataout3==0)
dataout3=10;
else
dataout3=dataout3;
end
always@(posedgesysclkornegedgerst)
begin
if(!rst)
begin
counter3=0;
led_sel=4'b0001;
end
else
begin
if(counter3==4)
begin
counter3=0;
if(led_sel==4'b1000)
led_sel=4'b0001;
else
led_sel=led_sel<<1;
end
counter3=counter3+1;
end
end
always@(led_sel,dataout1,dataout2,dataout3)
begin
case(led_sel)
4'b0001:
begin
case(dataout1)
0:led_seg=ZERO;
1:led_seg=ONE;
2:led_seg=TWO;
3:led_seg=THREE;
4:led_seg=FOUR;
5:led_seg=FIVE;
6:led_seg=SIX;
7:led_seg=SEVEN;
8:led_seg=EIGHT;
9:led_seg=NINE;
default:led_seg=BLANK;
endcase
end
4'b0010:
begin
case(dataout2)
0:led_seg=ZERO;
1:led_seg=ONE;
2:led_seg=TWO;
3:led_seg=THREE;
4:led_seg=FOUR;
5:led_seg=FIVE;
6:led_seg=SIX;
7:led_seg=SEVEN;
8:led_seg=EIGHT;
9:led_seg=NINE;
default:led_seg=BLANK;
endcase
end
4'b0100:
begin
case(dataout3)
0:led_seg=ZERO;
1:led_seg=ONE;
2:led_seg=TWO;
3:led_seg=THREE;
4:led_seg=FOUR;
5:led_seg=FIVE;
6:led_seg=SIX;
7:led_seg=SEVEN;
8:led_seg=EIGHT;
9:led_seg=NINE;
default:led_seg=BLANK;
endcase
end
4'b1000:
begin
case(10)
0:led_seg=ZERO;
1:led_seg=ONE;
2:led_seg=TWO;
3:led_seg=THREE;
4:led_seg=FOUR;
5:led_seg=FIVE;
6:led_seg=SIX;
7:led_seg=SEVEN;
8:led_seg=EIGHT;
9:led_seg=NINE;
default:led_seg=BLANK;
endcase
end
default:
begin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 46886-2025智能檢測裝備通用技術要求
- CCAA - 2024年03月建筑施工領域專業(yè)答案及解析 - 詳解版(65題)
- 山東省煙臺市海陽市2025-2026學年七年級上學期期末生物學試題(含解析)
- 中學學生課外實踐基地建設制度
- 養(yǎng)老院環(huán)境衛(wèi)生與綠化制度
- 企業(yè)信息安全規(guī)范制度
- 電池制液工崗前基礎驗收考核試卷含答案
- 鐵氧體材料燒成工崗后能力考核試卷含答案
- 海藻飼料肥料制作工崗前達標考核試卷含答案
- 我國上市公司機構投資者持股、融資方式與并購績效的關聯(lián)性探究
- 2025年健康體檢中心服務與質量管理手冊
- 2025-2030中國駱駝市場前景規(guī)劃與投資運作模式分析研究報告
- 2026中國電信四川公用信息產(chǎn)業(yè)有限責任公司社會成熟人才招聘備考題庫及完整答案詳解一套
- 綠化設備安全培訓課件
- 鋼結構玻璃雨棚安裝施工方案
- 給水管道遷改工程施工方案
- 【數(shù)學】二次根式及其性質第1課時二次根式的概念課件 2025~2026學年人教版數(shù)學八年級下冊
- 漢源縣審計局關于公開招聘編外專業(yè)技術人員的備考題庫附答案
- 2025安徽省合肥市公務員考試《行測》題庫及答案(各地真題)
- 2026年上海市普陀區(qū)社區(qū)工作者公開招聘筆試參考題庫及答案解析
- 《中華人民共和國危險化學品安全法》全套解讀
評論
0/150
提交評論