




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、PAGE PAGE 26西北工業大學課程設計報告(bogo) 題 目: 波形發生器 學 院 自動化學院(xuyun)專 業 自動化 班 級 09031201 日 期 2015 年 1 月 15 日 摘要(zhiyo)1 題目(tm) 本次實驗(shyn)主要是以FPGA作為(zuwi)基礎,制作一個簡易波形發生器,不僅可以顯示學號,同時可以通過按鍵輸入產生波形, 并且可以根據需要按鍵修改波形以及頻率。2 要求2.1顯示學號(1)采用數碼管顯示。(2)循環顯示兩個人的學號后四位。2.2按鍵輸入產生波形(1)根據標準鍵盤輸入不同,分別輸出正弦波、方波、三角波(頻率=1KHz)。(2)根據標準鍵盤改
2、變頻率(頻率變化范圍:1KHz-10KHz,每次頻率變化1KHz)。(3)輸出頻率在數碼管上顯示(用模塊PCF8591進行D/A轉化)。3 設計平臺與基礎3.1 設計(shj)平臺與仿真工具Quartus II是一種(y zhn)強有力的提供(tgng)了EDA工具,是美國altera公司推出的,它完全集成且與電路結構無關的開發包環境,具有數字邏輯設計的全部特性,包括:可利用原理圖、結構框圖、Verilog HDL、AHDL和VHDL完成電路描述,并將其保存為設計實體文件;芯片(電路)平面布局連線編輯;Logic Lock增量設計方法,可建立并優化系統,然后添加對原始系統的性能影響較小或無影響
3、的后續模塊;功能強大的邏輯綜合工具;完備的電路功能仿真與時序邏輯仿真工具;定時/時序分析與關鍵路徑延時分析;可使用Signal Tap II邏輯分析工具進行嵌入式的邏輯分析;支持軟件源文件的添加和創建,并將它們鏈接起來生成編程文件;使用組合編譯方式可一次完成整體設計流程;自動定位編譯錯誤;高效的期間編程與驗證工具;可讀入標準的EDIF網表文件、VHDL網表文件和Verilog網表文件;能生成第三方SOPC軟件使用的VHDL網表文件和Verilog網表文件。測試采用了Quartus II的內嵌式邏輯分析儀內嵌式邏輯分析儀三項主要優點:1. 它們的使用不增加引腳。可通過FPGA 上已有的專門JTA
4、G引腳訪問,即使沒有其它可用引腳,這種調試方法也能得到內部可視能力。2. 簡單的探測。探測包括把結點路由到內部邏輯分析儀的輸入,不需要擔心為得到有效信息,應如何連接到電路板上,也不存在信號完整性問題。3. 內核是便宜的。FPGA廠商把他們的業務模型建立于用芯片所獲取價值的基礎上,所以所用的調試IP 通常能以低于$1,000美元的價格獲得。3.2芯片方案3.2.1 FPGA器件的選擇由于Altera大學計劃較為普及,設計并平臺搭建方便,故采用Altera FPGA。Altera 的主流FPGA分為兩大類,一種側重低成本應用,容量中等,性能可以滿足一般的邏輯設計要求,如Cyclone,Cyclon
5、e II;還有一種側重于高性能應用,容量大,性能滿足各類高端應用,如Startix,Stratix II等,用戶可以根據自己實際應用要求進行選擇。在性能可以滿足的情況下,優先選擇低成本器件。Cyclone(颶風):Altera中等規模FPGA,2003年推出,0.13um工藝,1.5v內核供電,與Stratix結構類似,是一種低成本FPGA系列,是目前主流產品,其配置芯片也改用全新(qun xn)的產品。Cyclone II: 2005年開始推出,90nm工藝,1.2v內核供電,屬于低成本FPGA,性能(xngnng)和Cyclone相當,提供了硬件乘法器單元。Cyclone III:Cycl
6、one III FPGA提供豐富(fngf)的邏輯 HYPERLINK /view/87697.htm t /_blank 存儲器和DSP功能功耗更低。Cyclone 即可以滿足本次課題的設計需求,所以本課題選用Cyclone III。3.2.2 D/A芯片選型PCF8591是一個單片集成、單獨供電、低功耗、8-bit CMOS數據獲取器件。PCF8591具有4個模擬輸入、1個模擬輸出和1個串行IC HYPERLINK /view/653587.htm t /view/_blank 總線接口。PCF8591的3個地址 HYPERLINK /view/641241.htm t /view/_bl
7、ank 引腳A0, A1和A2可用于硬件地址 HYPERLINK /view/3281.htm t /view/_blank 編程,允許在同個I2C總線上接入8個PCF8591器件,而無需額外的硬件。在PCF8591器件上輸入輸出的地址、控制和數據信號都是通過雙線雙向I2C總線以串行的方式進行傳輸。功能:【1】PCF8591的功能包括多路模擬輸入、內置跟蹤保持、8-bit模數轉換和8-bit數模轉換?!?】PCF8591的最大轉化速率由I2C總線的最大速率決定。特性:【1】單獨供電【2】PCF8591的操作電壓范圍2.5V-6V【3】低待機電流【4】通過I2C總線串行輸入/輸出【5】PCF85
8、91通過3個硬件地址 HYPERLINK /view/641241.htm t _blank 引腳尋址【6】PCF8591的采樣率由I2C總線速率決定【7】4個模擬輸入可編程為單端型或差分輸入【8】自動增量頻道選擇【9】PCF8591的模擬電壓范圍從VSS到VDD【10】PCF8591內置跟蹤保持電路【11】8-bit逐次逼近 HYPERLINK /view/990260.htm t _blank A/D轉換器【12】通過1路模擬輸出實現DAC增益4 方案設計4.1 系統(xtng)介紹利用FPGA技術的強大功能,實現(shxin)A/D轉換,信號采集并顯示采集信號的幅度、頻率。并利用D/A轉
9、換產生幅度、頻率可調的方波、正弦波、三角波。4.2系統(xtng)設計方案4.2.1工作原理系統框圖:信號產生部分:信號發生器采用D/A設計方案。首先在FPGA中設計預先定制好的波形發生ROM表,然后鍵盤控制FPGA讀取ROM表中寫好的數據,送至D/A轉換芯片后輸出波形。同時,由鍵盤輸入控制,轉換讀取數據的ROM表格,來轉換輸出波形的種類;改變FPGA讀取ROM表的讀數間隔來改變輸出信號的頻率。信號測量部分:將被測信號經過放大器放大到可以被比較器識別的幅度值,經過比較器過零比較,產生同頻率的方波信號,可以被FPGA直接識別,進行計數,經過FPGA內部數據處理,計算出被測信號的頻率值,再由液晶顯
10、示。4.3單元(dnyun)電路設計4.3.1 輸入(shr)設計輸入設計采用PS2鍵盤輸入,即通過(tnggu)按鍵選擇輸出波形是正弦波、三角波還是方波,同時也通過鍵盤輸入來改變波形的頻率。4.3.2 波形發生模塊由于波形發生控制器和波形數據ROM都是利用硬件描述語言編程實現的,所以統稱為波形發生模塊。波形發生控制器的作用是利用FPGA選擇產生正弦波或者三角波,然后再發出地址信號,取ROM中存好的正弦波或三角波的采樣數據。 波形發生模塊包括波形切換和頻率設置兩個進程。切換進程的作用是完成通過按鍵來選擇輸出三角波或者三角波。頻率設置進程主要是對輸出的頻率進行設置,只要合適的改變采樣點的時間間隔
11、就可完成頻率設置。ROM數據存儲模塊主要是用來存儲正弦波或者三角波的數據。當接收來自FPGA的地址信號后,將從數據線輸出相應的波形數據,這樣便得到數字化的波形。 4.3.3 D/A轉換D/A選用PCF8591作為主要波形發生芯片。引腳圖如圖1所示,結構圖如圖2示。各引腳說明如下:5.電路圖D/A與FPGA擴展接口相連接(linji),搭成硬件連接系統,在此基礎之上,設計軟件代碼,用FPGA控制D/A的工作,和兩者之間互相配合。如圖所示。系統(xtng)原理圖6.測試方法(1)用示波器觀察產生(chnshng)波形;(2)在液晶屏上讀取信號(xnho)頻率值;7.部分(b fen)代碼和軟件程序
12、FPGA控制AD控制狀態機P1: process(present_state,next_state,AD_INT) begin case present_state is when AD_IDLE = AD_CS=0;AD_WR=1;AD_RD=0; next_state AD_WR = 0;AD_CS = 0; AD_RD = 0;next_state AD_WR = 1;AD_CS = 0; AD_RD = 0;if AD_INT=1 THENnext_state = AD_WAIT;ELSEnext_state AD_CS = 0; AD_WR = 0; AD_RD = 0; next_
13、state AD_CS = 0;AD_WR = 1; AD_RD = 0; next_state next_state da_cs=1;da_wr=1;da_stateda_cs=0;da_wr=1;da_stateda_cs=0;da_wr=0;da_stateda_out=dadatain;da_stateda_statenull;end case;end if;end process p2;FPGA控制頻率采集(cij)程序p3:process(clkin,temp1,temp2,temp3,temp4,temp5,temp6)beginif clr=0 then temp1=0000;
14、temp2=0000;temp3=0000;temp4=0000;temp5=0000;temp6=0000;temp7=0000;temp8=0000;elsif rising_edge(clkin) then if sysclk=1 then if temp1=1001 then temp1=0000; if temp2=1001 then temp2=0000; if temp3=1001 then temp3=0000; if temp4=1001 then temp4=0000; if temp5=1001 then temp5=0000; if temp6=1001 then te
15、mp6=0000; if temp7=1001 then temp7=0000; if temp8=1001 then temp8=0000; else temp8=temp8+1;end if; else temp7=temp7+1;end if; else temp6=temp6+1;end if; else temp5=temp5+1;end if; else temp4=temp4+1;end if; else temp3=temp3+1;end if; else temp2=temp2+1;end if; else temp1=temp1+1;end if; else if temp
16、1/=0000 or temp2/=0000 or temp3/=0000 or temp4/=0000 or temp5/=0000 or temp6/=0000 or temp7/=0000 or temp8/=0000 then dat1=temp1;dat2=temp2;dat3=temp3;dat4=temp4; dat5=temp5;dat6=temp6;dat7=temp7;dat8=temp8; temp1=0000;temp2=0000;temp3=0000;temp4=0000;temp5=0000;temp6=0000; temp7=0000;temp8=0000; en
17、d if; end if;end if;end process p3;建立(jinl)ROM表:always (posedge sin_clk) begin /sin case(count_4)8d001:data_sin= 8d128; 8d002:data_sin= 8d134 ;8d003:data_sin= 8d140 ;8d004:data_sin= 8d146 ;8d005:data_sin= 8d152 ;8d006:data_sin= 8d158 ;8d007:data_sin=8d165 ;8d008:data_sin=8d170 ;8d009:data_sin=8d176
18、;8d010:data_sin=8d182 ;8d011:data_sin=8d188 ;8d012:data_sin=8d193 ;8d013:data_sin=8d198 ;8d014:data_sin=8d203 ;8d015:data_sin=8d208 ;8d016:data_sin=8d213 ;8d017:data_sin=8d218 ;8d018:data_sin=8d222 ;8d019:data_sin=8d226 ;8d020:data_sin=8d230 ;8d021:data_sin=8d234 ;8d022:data_sin=8d237 ;8d023:data_si
19、n=8d240 ;8d024:data_sin=8d243 ;8d025:data_sin=8d245 ;8d026:data_sin=8d248 ;8d027:data_sin=8d250 ;8d028:data_sin=8d251 ;8d029:data_sin=8d253 ;8d030:data_sin=8d254 ;8d031:data_sin=8d254 ;8d032:data_sin=8d255 ;8d033:data_sin=8d255 ;8d034:data_sin=8d255 ;8d035:data_sin=8d254 ;8d036:data_sin=8d254 ;8d037
20、:data_sin=8d253 ;8d038:data_sin=8d251 ;8d039:data_sin=8d250 ;8d040:data_sin=8d248 ;8d041:data_sin=8d245 ;8d042:data_sin=8d243 ;8d043:data_sin=8d240 ;8d044:data_sin=8d237 ;8d045:data_sin=8d234 ;8d046:data_sin=8d230 ;8d047:data_sin=8d226 ;8d048:data_sin=8d222 ;8d049:data_sin=8d218 ;8d050:data_sin=8d21
21、3 ;8d051:data_sin=8d208 ;8d052:data_sin=8d203 ;8d053:data_sin=8d198 ;8d054:data_sin=8d193 ;8d055:data_sin=8d188 ;8d056:data_sin=8d182 ;8d057:data_sin=8d176 ;8d058:data_sin=8d170 ;8d059:data_sin=8d165 ;8d060:data_sin=8d158 ;8d061:data_sin=8d152 ;8d062:data_sin=8d146 ;8d063:data_sin=8d140 ;8d064:data_
22、sin=8d134 ;8d065:data_sin=8d128 ;8d066:data_sin=8d121 ;8d067:data_sin=8d115 ;8d068:data_sin=8d109 ;8d069:data_sin=8d103 ;8d070:data_sin=8d97 ;8d071:data_sin=8d90 ;8d072:data_sin=8d85 ;8d073:data_sin=8d79 ;8d074:data_sin=8d73 ;8d075:data_sin=8d67 ;8d076:data_sin=8d62 ;8d077:data_sin=8d57 ;8d078:data_
23、sin=8d52 ;8d079:data_sin=8d47 ;8d080:data_sin=8d42 ;8d081:data_sin=8d37 ;8d082:data_sin=8d33 ;8d083:data_sin=8d29 ;8d084:data_sin=8d25 ;8d085:data_sin=8d21 ;8d086:data_sin=8d18 ;8d087:data_sin=8d15 ;8d088:data_sin=8d12 ;8d089:data_sin=8d10 ;8d090:data_sin=8d7 ;8d091:data_sin=8d5 ;8d092:data_sin=8d4
24、;8d093:data_sin=8d2 ;8d094:data_sin=8d1 ;8d095:data_sin=8d1 ;8d096:data_sin=8d0 ;8d097:data_sin=8d0 ;8d098:data_sin=8d0 ;8d099:data_sin=8d1 ;8d100:data_sin=8d1 ;8d101:data_sin=8d2 ;8d102:data_sin=8d4 ;8d103:data_sin=8d5 ;8d104:data_sin=8d7 ;8d105:data_sin=8d10 ;8d106:data_sin=8d12 ;8d107:data_sin=8d
25、15 ;8d108:data_sin=8d18 ;8d109:data_sin=8d21 ;8d110:data_sin=8d25 ;8d111:data_sin=8d29 ;8d112:data_sin=8d33 ;8d113:data_sin=8d37 ;8d114:data_sin=8d42 ;8d115:data_sin=8d47 ;8d116:data_sin=8d52 ;8d117:data_sin=8d57 ;8d118:data_sin=8d62 ;8d119:data_sin=8d67 ;8d120:data_sin=8d73 ;8d121:data_sin=8d79 ;8d
26、122:data_sin=8d85 ;8d123:data_sin=8d90 ;8d124:data_sin=8d97 ;8d125:data_sin=8d103 ;8d126:data_sin=8d109 ;8d127:data_sin=8d115 ;8d128: begin data_sin=8d121 ;count_4=25d0;endendcase endalways (posedge div_clk) begin /iic for sjb numb=numb+8b0000001; case(numb) 8h01:scl=1; /s 8h02:sda=0; 8h03:scl=0; /a
27、ddress 8h04:sda=1; 8h05:scl=1; 8h06:scl=0; 8h07:sda=0; 8h08:scl=1; 8h09:scl=0; 8h0a:sda=0; 8h0b:scl=1; 8h0c:scl=0; 8h0d:sda=1; 8h0e:scl=1; 8h0f:scl=0; 8h10:sda=0; 8h11:scl=1; 8h12:scl=0; 8h13:sda=0; 8h14:scl=1; 8h15:scl=0; 8h16:scl=1; 8h17:scl=0; 8h18:scl=1; 8h19:scl=0; 8h1a:scl=1; /ack 8h1b:scl=0;
28、8h1c:sda=1; /4 8h1d:scl=1; 8h1e:scl=0; 8h1f:sda=1; 8h20:scl=1; 8h21:scl=0; 8h22:sda=0; 8h23:scl=1; 8h24:scl=0; 8h25:scl=1; 8h26:scl=0; 8h27:scl=1; 8h28:scl=0; 8h29:scl=1; 8h2a:scl=0; 8h2b:scl=1; 8h2c:scl=0; 8h2d:scl=1; 8h2e:scl=0; 8h2f:scl=1; 8h30:scl=0; /ack 8h31:sda=data7; 8h32:scl=1; 8h33:scl=0;
29、8h34:sda=data6; 8h35:scl=1; 8h36:scl=0; 8h37:sda=data5; 8h38:scl=1; 8h39:scl=0; 8h3a:sda=data4; 8h3b:scl=1; 8h3c:scl=0; 8h3d:sda=data3; 8h3e:scl=1; 8h3f:scl=0; 8h40:sda=data2; 8h41:scl=1; 8h42:scl=0; 8h43:sda=data1; 8h44:scl=1; 8h45:scl=0; 8h46:sda=data0; 8h47:scl=1; 8h48:scl=0; 8h49:sda=0; /ack 8h4
30、a:scl=1; 8h4b:scl=0; 8h4c:scl=1; /stop 8h4d:sda=1; endcase end always (posedge plxs_clk) begin /sjb xianshi case(count_jc) 16d50000:scpl=8b11111001; 16d25000:scpl=8b10100100; 16d16666:scpl=8b10110000; 16d12500:scpl=8b10011001; 16d10000:scpl=8b10010010; 16d08333:scpl=8b10000010; 16d07142:scpl=8b11111
31、000; 16d06250:scpl=8b10000000; 16d05555:scpl=8b10010000; 16d05000:scpl=8b10001000; endcase endalways (posedge div_clk) begin /iic for fb numb_fb=numb_fb+8b0000001; case(numb_fb) 8h01:scl1=1; /s 8h02:sda1=0; 8h03:scl1=0; /address 8h04:sda1=1; 8h05:scl1=1; 8h06:scl1=0; 8h07:sda1=0; 8h08:scl1=1; 8h09:s
32、cl1=0; 8h0a:sda1=0; 8h0b:scl1=1; 8h0c:scl1=0; 8h0d:sda1=1; 8h0e:scl1=1; 8h0f:scl1=0; 8h10:sda1=0; 8h11:scl1=1; 8h12:scl1=0; 8h13:sda1=0; 8h14:scl1=1; 8h15:scl1=0; 8h16:scl1=1; 8h17:scl1=0; 8h18:scl1=1; 8h19:scl1=0; 8h1a:scl1=1; /ack 8h1b:scl1=0; 8h1c:sda1=1; /4 8h1d:scl1=1; 8h1e:scl1=0; 8h1f:sda1=1;
33、 8h20:scl1=1; 8h21:scl1=0; 8h22:sda1=0; 8h23:scl1=1; 8h24:scl1=0; 8h25:scl1=1; 8h26:scl1=0; 8h27:scl1=1; 8h28:scl1=0; 8h29:scl1=1; 8h2a:scl1=0; 8h2b:scl1=1; 8h2c:scl1=0; 8h2d:scl1=1; 8h2e:scl1=0; 8h2f:scl1=1; 8h30:scl1=0; /ack 8h31:sda1=data_fb7; 8h32:scl1=1; 8h33:scl1=0; 8h34:sda1=data_fb6; 8h35:sc
34、l1=1; 8h36:scl1=0; 8h37:sda1=data_fb5; 8h38:scl1=1; 8h39:scl1=0; 8h3a:sda1=data_fb4; 8h3b:scl1=1; 8h3c:scl1=0; 8h3d:sda1=data_fb3; 8h3e:scl1=1; 8h3f:scl1=0; 8h40:sda1=data_fb2; 8h41:scl1=1; 8h42:scl1=0; 8h43:sda1=data_fb1; 8h44:scl1=1; 8h45:scl1=0; 8h46:sda1=data_fb0; 8h47:scl1=1; 8h48:scl1=0; 8h49:
35、sda1=0; /ack 8h4a:scl1=1; 8h4b:scl1=0; 8h4c:scl1=1; /stop 8h4d:sda1=1; endcase end always (posedge plxs_clk) begin /fb xianshi case(count_jcfb) 16d50000:scpl_fb=8b11111001; 16d25000:scpl_fb=8b10100100; 16d16666:scpl_fb=8b10110000; 16d12500:scpl_fb=8b10011001; 16d10000:scpl_fb=8b10010010; 16d08333:sc
36、pl_fb=8b10000010; 16d07142:scpl_fb=8b11111000; 16d06250:scpl_fb=8b10000000; 16d05555:scpl_fb=8b10010000; 16d05000:scpl_fb=8b10001000; endcase end always (posedge div_clk) begin /iic for sin numb_sin=numb_sin+8b0000001; case(numb_sin) 8h01:scl2=1; /s 8h02:sda2=0; 8h03:scl2=0; /address 8h04:sda2=1; 8h
37、05:scl2=1; 8h06:scl2=0; 8h07:sda2=0; 8h08:scl2=1; 8h09:scl2=0; 8h0a:sda2=0; 8h0b:scl2=1; 8h0c:scl2=0; 8h0d:sda2=1; 8h0e:scl2=1; 8h0f:scl2=0; 8h10:sda2=0; 8h11:scl2=1; 8h12:scl2=0; 8h13:sda2=0; 8h14:scl2=1; 8h15:scl2=0; 8h16:scl2=1; 8h17:scl2=0; 8h18:scl2=1; 8h19:scl2=0; 8h1a:scl2=1; /ack 8h1b:scl2=0; 8h1c:sda2=1; /4 8h1d:scl2=1; 8h1e:scl2=0; 8h1f:sda2=1; 8h2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年心理學學科考試試卷及答案
- 2025年現代營銷渠道考試試題及答案
- Saclofen-Standard-生命科學試劑-MCE
- Rac-Roscovitine-Rac-Seliciclib-生命科學試劑-MCE
- 2025年企業管理師考試試卷及答案展示
- 2025年計算機專業基礎知識試題及答案
- 2025年電子商務理論與實務試題及答案
- 2025年公務員面試技巧試卷及答案
- 2025年國際法與國家利益考試試卷及答案
- 北海銀灘500字11篇
- 2025年暑假安全教育家長會
- 2024金融算力基礎設施發展報告
- 2024年深圳市煙草專賣局招聘筆試真題
- 子宮頸炎護理查房
- 北師大版五年級數學下冊典型例題第六單元:確定位置和描述路線專項練習(原卷版+解析)
- WPS表格基礎知識培訓課件
- 煤礦質量標準化建設實施方案
- 作物栽培學知到課后答案智慧樹章節測試答案2025年春中國農業大學
- 毒品與交通安全
- 電力需求的實時監測與調度系統
- 大學畢業論文摘要怎么寫
評論
0/150
提交評論