您好,欢迎访问三七文档
西北工业大学课程设计报告题目:波形发生器学院自动化学院专业自动化班级09031201日期2015年1月15日2摘要31题目本次实验主要是以FPGA作为基础,制作一个简易波形发生器,不仅可以显示学号,同时可以通过按键输入产生波形,并且可以根据需要按键修改波形以及频率。2要求2.1显示学号(1)采用数码管显示。(2)循环显示两个人的学号后四位。2.2按键输入产生波形(1)根据标准键盘输入不同,分别输出正弦波、方波、三角波(频率=1KHz)。(2)根据标准键盘改变频率(频率变化范围:1KHz-10KHz,每次频率变化1KHz)。(3)输出频率在数码管上显示(用模块PCF8591进行D/A转化)。43设计平台与基础3.1设计平台与仿真工具QuartusII是一种强有力的提供了EDA工具,是美国altera公司推出的,它完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;LogicLock增量设计方法,可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;能生成第三方SOPC软件使用的VHDL网表文件和Verilog网表文件。测试采用了QuartusII的内嵌式逻辑分析仪内嵌式逻辑分析仪三项主要优点:1.它们的使用不增加引脚。可通过FPGA上已有的专门JTAG引脚访问,即使没有其它可用引脚,这种调试方法也能得到内部可视能力。2.简单的探测。探测包括把结点路由到内部逻辑分析仪的输入,不需要担心为得到有效信息,应如何连接到电路板上,也不存在信号完整性问题。3.内核是便宜的。FPGA厂商把他们的业务模型建立于用芯片所获取价值的基础上,所以所用的调试IP通常能以低于$1,000美元的价格获得。3.2芯片方案3.2.1FPGA器件的选择由于Altera大学计划较为普及,设计并平台搭建方便,故采用AlteraFPGA。Altera的主流FPGA分为两大类,一种侧重低成本应用,容量中等,性能可以满足一般的逻辑设计要求,如Cyclone,CycloneII;还有一种侧重于高性能应用,容量大,性能满足各类高端应用,如Startix,StratixII等,用户可以根据自己实际应用要求进行选择。在性能可以满足的情况下,优先选择低成本器件。Cyclone(飓风):Altera中等规模FPGA,2003年推出,0.13um工艺,1.5v内核供电,与Stratix结构类似,是一种低成本FPGA系列,是目前主流产品,其配置芯片也改用全新的产品。CycloneII:2005年开始推出,90nm工艺,1.2v内核供电,属于低成本FPGA,性能和Cyclone相当,提供了硬件乘法器单元。CycloneIII:CycloneIIIFPGA提供丰富的逻辑存储器和DSP功能功耗更低。Cyclone即可以满足本次课题的设计需求,所以本课题选用CycloneIII。53.2.2D/A芯片选型PCF8591是一个单片集成、单独供电、低功耗、8-bitCMOS数据获取器件。PCF8591具有4个模拟输入、1个模拟输出和1个串行I²C总线接口。PCF8591的3个地址引脚A0,A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。功能:【1】PCF8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转换。【2】PCF8591的最大转化速率由I2C总线的最大速率决定。特性:【1】单独供电【2】PCF8591的操作电压范围2.5V-6V【3】低待机电流【4】通过I2C总线串行输入/输出【5】PCF8591通过3个硬件地址引脚寻址【6】PCF8591的采样率由I2C总线速率决定【7】4个模拟输入可编程为单端型或差分输入【8】自动增量频道选择【9】PCF8591的模拟电压范围从VSS到VDD【10】PCF8591内置跟踪保持电路【11】8-bit逐次逼近A/D转换器【12】通过1路模拟输出实现DAC增益64方案设计4.1系统介绍利用FPGA技术的强大功能,实现A/D转换,信号采集并显示采集信号的幅度、频率。并利用D/A转换产生幅度、频率可调的方波、正弦波、三角波。4.2系统设计方案4.2.1工作原理系统框图:信号产生部分:信号发生器采用D/A设计方案。首先在FPGA中设计预先定制好的波形发生ROM表,然后键盘控制FPGA读取ROM表中写好的数据,送至D/A转换芯片后输出波形。同时,由键盘输入控制,转换读取数据的ROM表格,来转换输出波形的种类;改变FPGA读取ROM表的读数间隔来改变输出信号的频率。信号测量部分:将被测信号经过放大器放大到可以被比较器识别的幅度值,经过比较器过零比较,产生同频率的方波信号,可以被FPGA直接识别,进行计数,经过FPGA内部数据处理,计算出被测信号的频率值,再由液晶显示。74.3单元电路设计4.3.1输入设计输入设计采用PS2键盘输入,即通过按键选择输出波形是正弦波、三角波还是方波,同时也通过键盘输入来改变波形的频率。4.3.2波形发生模块由于波形发生控制器和波形数据ROM都是利用硬件描述语言编程实现的,所以统称为波形发生模块。波形发生控制器的作用是利用FPGA选择产生正弦波或者三角波,然后再发出地址信号,取ROM中存好的正弦波或三角波的采样数据。波形发生模块包括波形切换和频率设置两个进程。切换进程的作用是完成通过按键来选择输出三角波或者三角波。频率设置进程主要是对输出的频率进行设置,只要合适的改变采样点的时间间隔就可完成频率设置。ROM数据存储模块主要是用来存储正弦波或者三角波的数据。当接收来自FPGA的地址信号后,将从数据线输出相应的波形数据,这样便得到数字化的波形。4.3.3D/A转换D/A选用PCF8591作为主要波形发生芯片。引脚图如图1所示,结构图如图2示。各引脚说明如下:85.电路图D/A与FPGA扩展接口相连接,搭成硬件连接系统,在此基础之上,设计软9件代码,用FPGA控制D/A的工作,和两者之间互相配合。如图所示。系统原理图6.测试方法(1)用示波器观察产生波形;(2)在液晶屏上读取信号频率值;107.部分代码和软件程序FPGA控制AD控制状态机P1:process(present_state,next_state,AD_INT)begincasepresent_stateiswhenAD_IDLE=AD_CS='0';AD_WR='1';AD_RD='0';next_state=AD_STATE_1;whenAD_STATE_1=AD_WR='0';AD_CS='0';AD_RD='0';next_state=AD_STATE_2;whenAD_STATE_2=AD_WR='1';AD_CS='0';AD_RD='0';ifAD_INT='1'THENnext_state=AD_WAIT;ELSEnext_state=AD_STATE_1;ENDIF;whenAD_WAIT=AD_CS='0';AD_WR='0';AD_RD='0';next_state=AD_READ;whenAD_READ=AD_CS='0';AD_WR='1';AD_RD='0';next_state=AD_STOP;whenAD_STOP=next_state=AD_IDLE;endcase;endprocessP1;FPGA控制D/A控制状态机11p2:process(clk1,da_state)beginifrising_edge(clk1)thencaseda_stateiswhenaidle=da_cs='1';da_wr='1';da_state=astart;whenastart=da_cs='0';da_wr='1';da_state=awrite;whenawrite=da_cs='0';da_wr='0';da_state=ahold;whenahold=da_out=dadatain;da_state=astop;whenastop=da_state=aidle;whenothers=null;endcase;endif;endprocessp2;FPGA控制频率采集程序p3:process(clkin,temp1,temp2,temp3,temp4,temp5,temp6)beginifclr='0'thentemp1=0000;temp2=0000;temp3=0000;temp4=0000;temp5=0000;temp6=0000;temp7=0000;temp8=0000;elsifrising_edge(clkin)thenifsysclk='1'theniftemp1=1001thentemp1=0000;iftemp2=1001thentemp2=0000;iftemp3=1001thentemp3=0000;iftemp4=1001thentemp4=0000;iftemp5=1001thentemp5=0000;12iftemp6=1001thentemp6=0000;iftemp7=1001thentemp7=0000;iftemp8=1001thentemp8=0000;elsetemp8=temp8+1;endif;elsetemp7=temp7+1;endif;elsetemp6=temp6+1;endif;elsetemp5=temp5+1;endif;elsetemp4=temp4+1;endif;elsetemp3=temp3+1;endif;elsetemp2=temp2+1;endif;elsetemp1=temp1+1;endif;elseiftemp1/=0000ortemp2/=0000ortemp3/=0000ortemp4/=0000ortemp5/=0000ortemp6/=0000ortemp7/=0000ortemp8/=0000thendat1=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;endif;endif;endif;endprocessp3;建立ROM表:always@(posedgesin_clk)begin//sincase(count_4)8'd001:data_sin=8'd128;8'd002:data_sin=8'd134;8'd003:data_sin=8'd140;8'd004:data_sin=8'd146;8'd005:data_sin=8'd152;8'd006:data_sin=8'd158;8'd007:data_sin=8'd165;8'd008:data_sin=8'd170;8'd009:data_sin=8'd176;8'd010:data_sin=8'd1
本文标题:波形发生器课设报告
链接地址:https://www.777doc.com/doc-2260825 .html