【正文】
if(!reset)begin rd=0。 wd=0。 i=0。 end else begin if(i= =5000000) begin i=0。 wd=~wd。 rd=0。 end else i=i+1。end end endmodule附錄 7:C 語言程序設(shè)計/* * Hello World example. * This example prints 39。Hello from Nios II39。 to the STDOUT stream. It runs on * the Nios II 39。standard39。, 39。full_featured39。, 39。fast39。, and 39。low_cost39。 example * designs. It runs with or without the MicroC/OSII RTOS and requires a STDOUT * device in your system39。s hardware. * The memory footprint of this hosted application is ~69 kbytes by default * using the standard reference design.20* For a reduced footprint version of this template, and an explanation of how * to reduce the memory footprint for a given application, see the * small_hello_world template. */include include include include sys/include define u8 alt_u8define u32 alt_u32define a1 10define a2 100define a3 1000define a4 10000define a5 100000define a6 1000000define a7 10000000//***********************************8int led_display(u32 data1,u32 data2,u32 data3) { u32 d0,d1,d2,d3,d4,d5,d6,d7,led。 d0=0。// ,display 0 d1=data1%a1。// ,display 0 d2=data1/a1。d2=d2%a1。// ,display value d3=data1/a2。d3=d3%a1。// ,display value d4=data2%a1。// ,display value d5=data2/a1。d5=d5%a1。// ,display value d6=data3。// ,display 0 d7=0。// ,display 0 //move bit d1=4。//move the value to the d2=8。//move the value to the d3=12。//move the value to the d4=16。//move the value to the 21 d5=20。//move the value to the d6=24。//move the value to the d7=28。//move the value to the //pose 32 bit data led=(d0|d1|d2|d3|d4|d5|d6|d7)。 return(led)。 }//**************************************int main(){ u8 key3,key2,k3=1,k2=0。 u32 temp,temp1,zheng_zhi,yu_zhi,data,selt_data。 u32 seg7_data1,seg7_data2,seg7_data3,led_data。 u32 ad_data,yushu。 while(1) { key3=IORD_ALTERA_AVALON_PIO_DATA(KEY3_BASE)。 key2=IORD_ALTERA_AVALON_PIO_DATA(KEY2_BASE)。 if(k3==10) k2=0。 if(key3==0) { usleep(50000)。 key3=IORD_ALTERA_AVALON_PIO_DATA(KEY3_BASE)。 if(key3==0) { if(k310) k3++。 else k3=1。 } while(key3==0) key3=IORD_ALTERA_AVALON_PIO_DATA(KEY3_BASE)。 } if(key2==0) {22 usleep(50000)。 key2=IORD_ALTERA_AVALON_PIO_DATA(KEY2_BASE)。 if(key2==0) { if(k3==10) { k2=0。 //IOWR_ALTERA_AVALON_PIO_DATA(LED_RED_BASE,1)。 } else if(k29) k2++。 else k2=0。 } while(key2==0) key2=IORD_ALTERA_AVALON_PIO_DATA(KEY2_BASE)。 } temp=k3*10+k2。 seg7_data1=temp。 //IOWR_ALTERA_AVALON_PIO_DATA(LED_RED_BASE,temp)。 temp1=2*temp。 zheng_zhi=15625/temp1。 yu_zhi=(156250/temp1)%10。 if(yu_zhi5) data=zheng_zhi。 else data=zheng_zhi+1。 selt_data=IORD_ALTERA_AVALON_PIO_DATA(SELT_BASE)。 if(selt_data==1) seg7_data3=1。 else if (selt_data==2) seg7_data3=2。 else if (selt_data==3) seg7_data3=3。 seg7_data2=2。 //***************read A/D******************************* ad_data=IORD_ALTERA_AVALON_PIO_DATA(DATA_IN_BASE)。 seg7_data2=ad_data/5。 yushu=ad_data%5。23 if(yushu3) seg7_data2++。 IOWR_ALTERA_AVALON_PIO_DATA(DATA_BASE,data)。 //****************SEG7 display led_data=led_display(seg7_data1,seg7_data2,seg7_data3)。 IOWR(SEG7_DISPLAY_BASE,0,led_data)。 } return 0。}《基于 FPGA 的多波形發(fā)生器的設(shè)計》論文評語論文結(jié)構(gòu)合乎撰寫規(guī)范,文字表述流暢,思路清晰,邏輯性強。論文介紹了基于 FPGA 的多功能信號發(fā)生器的設(shè)計思想、使用的設(shè)計及仿真軟件、設(shè)計程序的編寫、仿真過程及結(jié)果、設(shè)計電路的工作原理、電子器件的使用方法等,特別是作者在設(shè)計中引入了 Nios II 嵌入式處理器,大大簡化了設(shè)計過程,保證了設(shè)計指標(biāo),為畢業(yè)設(shè)計的成功打下了基礎(chǔ)。設(shè)計方案合理,技術(shù)路線可行,實現(xiàn)了正弦波、方波和三角波信號的輸出,并且輸出信號的頻率及幅度穩(wěn)定、準(zhǔn)確,調(diào)節(jié)方便,并能以數(shù)字形式顯示輸出信號的頻率和幅度,各項性能指標(biāo)達到了設(shè)計的要求。本設(shè)計技術(shù)較先進,器件運用較合理,所設(shè)計產(chǎn)品具有一定的應(yīng)用價值和市場開發(fā)潛力。從論文中反映出,該同學(xué)掌握了比較扎實的基礎(chǔ)理論知識和專業(yè)知識,具有一定的綜合運用所學(xué)知識和技能分析問題和解決問題的能力。(指導(dǎo)老師:林漢)