您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 72FPGA实验设计报告―广东技术师范学院
实验报告课程名称:FPGA设计及应用实验项目:FPGA设计实验时间:2014.12.8-2014.12.31实验班级:12应用师3班总份数:共5份指导教师:李豪彦电子与信息学院工业中心504实验室二〇〇四年十二月十七日广东技术师范学院实验报告学院:电信学院专业:应用电子技术教育班级:12应用师3班成绩:姓名:张文斌学号:2012045344209组别:组员:实验地点:工业中心实验日期:指导教师签名:实验(一)项目名称:D分频器设计一、实验目的1.学习分频器的设计,进一步了解、熟悉和掌握FPGA开发软件QuartusII的使用方法2.学习VerilogHDL和VHDL的编程方法二、实验内容编写一个分频器的Verilog代码和VHDL代码并仿真。三、实验原理在数字电路中,时钟信号的分频是很常见的电路。分频器除了可以对时钟信号频率做除以二的计算外,分频器同时很类似涟波计数器。涟波计数器是计数器的一种,它属于异步设计。因为触发器并非皆由同一个时钟信号同步操作,所以它非常节省电路面积。本实验要设一个带选择的分频时钟D[7:0]用于选择是几分频。D分频器设原理框图如图1所示:图1.D分频器原理框图预习情况操作情况考勤情况数据处理情况四、实验步骤1.新建工程,取名为DVF,如下图2所示。图2新建工程DVF2.新建VHDL设计文件,选择“File|New”,在New对话框中选择DeviceDesignFiles下的VHDLFile,单击OK,完成新建设计文件。3.在新建设计文件中输入VHDL程序。4.生成“Symbol”文件,新建“BlockDiagram/SchematicFile”文件,在文件中添加刚刚生成的“Symbol”以及输入输出管脚,最后完整的系统顶层模块图如图3所示。图3DVF顶层模块图5.保存文件,使用qsf或者tcl进行管脚分配。6.对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。7.新建“VectorWaveformFile”文件进行波形仿真。8.下载完成后,观察实验结果。五、VHDL程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDVFISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC_VECTOR(7DOWNTO0);FOUT:OUTSTD_LOGIC);END;ARCHITECTUREoneOFDVFISSIGNALFULL:STD_LOGIC;BEGINP_REG:PROCESS(CLK)VARIABLECNT8:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFCLK'EVENTANDCLK='1'THENIFCNT8=11111111THENCNT8:=D;FULL='1';ELSECNT8:=CNT8+1;FULL='0';ENDIF;ENDIF;ENDPROCESSP_REG;P_DIV:PROCESS(FULL)VARIABLECNT2:STD_LOGIC;BEGINIFFULL'EVENTANDFULL='1'THENCNT2:=NOTCNT2;IFCNT2='1'THENFOUT='1';ELSEFOUT='0';ENDIF;ENDIF;ENDPROCESSP_DIV;END;六、问题讨论1、为什么在实验步骤1中,将半加器保存为DVF,可否保存为BVF?答:因为实验中要求所保存的文件名要与模块名相同,而保存的名字要符合其功能,弄混DVFr和BVF的话,会导致结果错误,不能正常运行。2、如何设计分频器?采用双计数器实现同样的功能,当分频系数N为偶数时,计数器从0到N-1循环计数,且计数器计数小于N/2时输出1,计数大于等于N/2则输出0;当分频系数N为奇数时,计数器从0到N-1循环计数,且计数器小于(N+1)/2时输出0,计数等于(N+1)/2时则输出0到1的跳变信号,且此跳变信号必须在标准时钟的下降沿跳变(满足50%占空比),计数大于(N+1)/2时则输出1。当分频系数N为奇数时,采用双计数器计数。两个计数器同时计数,一个沿上升沿计数,另一个则沿下降沿计数。计数器从0到N-1循环计数,且计数器计数小于(N-1)/2时输出1,计数大于等于(N-1)/2则输出0。在这样的控制方式下,分频后输出的波形恰好相差1/2时钟周期,将两个波形进行或(or)操作后,即可得到所要的波形(占空比50%)。广东技术师范学院实验预习报告学院:电信学院专业:应用电子技术教育班级:12应用师3班成绩:姓名:张文斌学号:2012045344209组别:组员:实验地点:工业中心实验日期:指导教师签名:实验(二)项目名称:七段数码管扫描显示13579bdf一、实验目的1.学习动态扫描显示的原理,进一步了解、熟悉和掌握FPGA开发软件QuartusII的使用方法2.学习VerilogHDL和VHDL的编程方法3.学会使用VectorWave功能仿真4.掌握使用多种方法分配管脚二、实验内容利用动态扫描的方式设计一个在8个数码管上面分别显示‘13579bdf‘的程序三、实验环境硬件:EP3C40Q240CB实验箱、USBByteBlaster下载电缆软件:AlteraQuartusII9.0集成开发环境四、实验原理一般来说,多个数码管的连接并不是把每个数码管都独立的与可编程逻辑器件连接,而是把所有的LED管的输入连在一起。如图1所示。其中每个数码管的8个段:a、b、c、d、e、f、g、h(h是小数点),都分别连到SEG_D0~SEG_D7,8个数码管分别由8个选通信号DIG_C0~DIG_C7来选择。被选通的数码管显示数据,其余关闭。如在某一时刻DIG_C2为低电平“0”,其余选通信号为高电平“1”,这时仅DIG_C2对应的数码管显示来自段码信号端的数据,而其它7个数码管呈显示关闭状态。根据这种电路状态,如果希望8个数码管显示希望的数据,就必须使得8个选通信号DIG_C0~DIG_C7分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫描就能实现扫描显示的目的。虽然每次只有一个LED显示,但只要扫描显示速率够快,由于人的视觉余辉效应,使我们仍会感觉所有的数码管都在同时显示。扫描频率大小不许合适才能有很好的效果。如果太小,而每个LED开启的时间大于人眼的视觉暂停时间,那么会产生闪烁现象。而扫描频率太大,则会图1扫描数码管的原理图造成LED的频繁开启和关断,大大增加LED功耗(开启和关断的时刻功耗很大)。一般来说,扫描频率选在50Hz比较合适。SW1为清零信号使能,dig为数码管片选信号端,seg为7段显示片选信号。五.引脚分配情况图2.引脚分配图六、实验步骤1.新建工程,取名为DECL7S,如下图3所示图3新建工程DDECL7S2.新建VHDL设计文件,选择“File|New”,在New对话框中选择DeviceDesignFiles下的VHDLFile,单击OK,完成新建设计文件。3.在新建设计文件中输入VHDL程序。4.编译程序。5.保存文件,进行管脚分配。6.对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。七、VHDL程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDECL7SISPORT(A:INSTD_LOGIC;LED7S1,LED7S2,LED7S3,LED7S4,LED7S5,LED7S6,LED7S7,LED7S8:OUTSTD_LOGIC_VECTOR(6DOWNTO0));END;ARCHITECTUREoneOFDECL7SISBEGINPROCESS(A)BEGINIFA='1'THENLED7S1=0000110;--1LED7S2=1001111;--3LED7S3=1101101;--5LED7S4=0000111;--7LED7S5=1101111;--9LED7S6=1111100;--bLED7S7=1011110;--dLED7S8=1111001;--fELSELED7S1=0000110;--1LED7S2=1001111;--3LED7S3=1101101;--5LED7S4=0000111;--7LED7S5=1101111;--9LED7S6=1111100;--bLED7S7=1011110;--dLED7S8=1111001;--fENDIF;ENDPROCESS;END;八、问题讨论1、在使用EP3C40Q240CB电路箱时要注意的事项?答:在使用EP3C40Q240CB电路箱时,首先要注意电箱的工作模式与QuartusII9.0集成开发环境下的模式(如下图)相对应,在下载sof文件时要选择相对应的USBI/O输出接口,以及QuartusII9.0集成开发环境下的引脚相对应,不要出错。2、数码管是如何显示的?答:其中每个数码管的8个段:a、b、c、d、e、f、g、h(h是小数点),都分别连到SEG_D0~SEG_D7,8个数码管分别由8个选通信号DIG_C0~DIG_C7来选择。被选通的数码管显示数据,其余关闭。如在某一时刻DIG_C2为低电平“0”,其余选通信号为高电平“1”,这时仅DIG_C2对应的数码管显示来自段码信号端的数据,而其它7个数码管呈显示关闭状态。根据这种电路状态,如果希望8个数码管显示希望的数据,就必须使得8个选通信号DIG_C0~DIG_C7分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫描就能实现扫描显示的目的。广东技术师范学院实验预习报告学院:电信学院专业:应用电子技术教育班级:12应用师3班成绩:姓名:张文斌学号:2012045344209组别:组员:实验地点:工业中心实验日期:指导教师签名:实验(三)项目名称:七段数码管显示学号一、实验目的1.学习动态扫描显示的原理,进一步了解、熟悉和掌握FPGA开发软件QuartusII的使用方法2.学习VerilogHDL和VHDL的编程方法3.学会使用VectorWave功能仿真4.掌握使用多种方法分配管脚二、实验内容利用动态扫描的方式设计一个在8个数码管上面分别显示‘13579bdf‘的程序三、实验环境硬件:EP3C40Q240CB实验箱、USBByteBlaster下载电缆软件:AlteraQuartusII9.0集成开发环境四、实验步骤1.新建工程,取名为SCAN_LED,如下图1所示建立工程。2.新建VHDL设计文件,选择“File|New”,在New对话框中选择DeviceDesignFiles下的VHDLFile,单击OK,完成新建设计文件。3.在新建设计文件中输入VHDL程序。4.编译程序。5.保存文件,进行管脚分配。6.对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。7.生成sof文件,下载到实验箱,调到相应的模式,使得七段数码管显示数据。五、VHDL程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSCAN_LEDISPORT(CLK:INSTD_LOGIC;RST:INSTD_LOGIC;SG:OUTSTD_LOGIC_VECTOR(6DOWNTO0);BT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));END;ARCHITECTUREoneOFSCAN_LEDISSIGNALCNT8:STD_LOGIC_VECTOR(5DOWNTO0);SIGNALA:INTEGERRANGE0TO15;BEGINP1:PROCESS(CLK,CNT8,RST)BEGINIFCLK'EVENTANDCLK='1'THENCASEC
本文标题:72FPGA实验设计报告―广东技术师范学院
链接地址:https://www.777doc.com/doc-5350218 .html