电子科技大学成都学院实验报告册课程名称:FPGA实验姓名:学号:院系:微电子技术系专业:集成电路设计与集成系统教师:2014 年12 月20日实验一:奇数分频一、实验目的:1、熟悉QuartusII的VHDL的文本设计流程全过程,学习计数器的设计与仿真。
2、掌握简单逻辑电路的设计方法与功能仿真技巧。
3、学习并掌握VHDL语言、语法规则。
4、学习使用VHDL语言进行奇数分频器的设计。
二、实验原理和内容:要实现占空比为50%的N倍奇数分频,首先上升沿触发进行模N计数,计数到某一个值n时输出时钟进行翻转,然后再计数(N-1)/2次,再进行翻转得到一个占空比非50%奇数n分频时钟。
同时进行下降沿触发的模N计数,等计数到n 时,输出时钟进行翻转,同样再计数(N-1)/2次,输出时钟再次翻转生成占空比非50%的奇数n分频时钟。
两个占空比非50%的n分频时钟进行或运算,即得到占空比为50%的奇数N分频时钟。
三、实验步骤:1、启动QuartusII软件,建立工程。
点击fiel→new project Wizard...进入命名窗口,如图1.1图1.12、点击右下角next→next,选择参数如图1.2图1.2点击finish。
3、建立源文件:点击file→new→Verilog HDL File 如图1.3图1.3点击OK,进入程序编写页面。
4、程序写完后点击编译按钮,如图1.4图1.4左边第一个紫色三角符号为编译按钮。
5、查看电路图:确定编译无误后,点击tools→Netlist Viewers→Technology Map Viewer.6、建立波形仿真文件:点击fiel→new→Vector Waveform File,如图1.5图1.57、再一次仿真后,点击processing→simulator Tool 如图1.6图1.6点击start开始波形仿真。
四、实验数据和结果:1、程序代码:2、电路图:3、波形仿真图:五、实验总结:1、通过该实验基本熟悉了Verilog HDL的设计流程。
2、在程序编程中出现了许多问题,比如阻塞和非阻塞语句的混合使用。
3、保存程序代码时要加后缀.v4、波形仿真中如果想要看到中间变量的波形变化,则需要手动添加。
实验二:按键控制LED一、实验目的:1、通过实验逐步了解、熟悉和掌握FPGA开发软件QuartusII的使用方法及Verilog HDL的编程方法。
2、了解LED工作的基本原理。
二、实验内容和原理:通过实验箱上的key0~key7来控制LED0~LED7的点亮,比如当按下key0时LED0点亮,按下key3时LED3点亮。
三、实验步骤:1、创建工程,取名为led。
2、建立源文件led.v。
3、编写程序,编译。
4、编译无误后设置引脚。
5、编译,下载。
观察数码管显示情况。
四、实验数据和结果:1、程序代码:2、实验电路图:五、实验总结:本实验只是LED灯的入门实验,实验步骤比较简单。
通过本实验了解了Verilog HDL的编程方法,以及熟悉了case语句的用法。
实验三:花样流水灯一、实验目的:1、进一步熟悉Verilog HDL设计流程。
FPGA开发软件的使用方法及Verilog HDL 的编程方法。
二、实验原理和内容:在LED1~LED8引脚上周期性的输出流水数据,如原来输出的流水数据是11111100则表示点亮LED1、LED2。
流水一次后输出的数据应该为11111000,而此时应该点亮LED1、LED2、LED3,这样就可以实现LED流水灯。
本实验的内容是建立可以用于控制LED流水灯的简单硬件电路,要求在SmartSOPC实验箱上实现LED1~LED8发光二极管流水灯显示。
三、实验步骤:1、启动QuartusII建立一个空白工程,然后命名为led_water.qpf。
2、新建Verilog HDL缘程序文件ledwater.v,输入程序代码并保存,然后综合编译。
若再编译过程中发现错误,则找出并更正错误,直到编译成功为止。
3、设置引脚。
Assignments→pins将跳线短接帽接到SmartSOPC实验箱上的JP6的LED0~LED7,使LED1~LED8分别与FPGA的引脚50、53~55、176和47~49相连。
然后打开电源,执行下载命令。
4、编译无误后点击下载右边第三个键点击start开始下载,完成后观看LED灯的闪烁情况。
5、更改分频系数,重新编译下载,观看流水灯的变化。
四、实验结果和数据:1、程序代码:2、电路图:3、实验图片采样:五、实验总结:1、在保存文件名时不能以数字开头,文件名要和程序中的模块名一致,不然编译的时候会报错。
当编译的警告超过20个后,程序不能在目标板上正常执行。
QuartusII新建工程与下载程序的方法。
实验四:静态数码管显示一、实验目的:1、学习7段数码管显示译码器的设计。
2、进一步了解、熟悉和掌握FPGA开发软件QuartusII的使用方法及Verilog HDL的编程方法。
二、实验原理和内容:本实验通过分频模块的到1Hz的频率信号,加载于4位奇数的时钟输入端,计数循环输出0~9、A~F共16个数。
最后通过7段译码模块译码后在数码管上显示出来。
本实验的内容是建立7段译码显示模块,用于控制LED数码管的静态显示。
要求在SmartSOCP实验箱上的数码管依次显示0~9、A~F 16个字符。
三、实验步骤:1、启动QuartusII建立一个空白工程,然后命名为decl7s。
2、建立源文件,取名为deci7s.v。
3、编写程序代码,编译。
如果编译有错误,则需要改正错误后继续编译。
4、设置引脚。
Assignments→pins5、编译、下载,观察数码管显示情况。
四、实验结果和数据:1、程序代码:2、电路图:3、实验图片采样:五、实验总结:1、本实验连续运用三个always模块,所以要明白每个always模块之间的关系。
2、本实验只运用了数码管的段选,没有用位选,所以得到的结果每个数码管显示的数都是相同的。
实验五:数码管显示学号后8位一、实验目的:1、进一步学习7段数码管显示译码器的设计。
2、学习动态扫描显示的原理及电路的设计。
3、熟悉Verilog HDL的编程方法。
二、实验原理及内容:本实验利用8个数码管显示学号的后8位,其中每个数码管的8个段a~h分别连到SEG0~SEG7,8个数码管分别由8个选通信号DIG0~DIG7来控制。
被选通的数码管显示数据,其余关闭。
如果想要8个数码管全都显示想要的数据,则需要8个选通信号DIG0~DIG8分别单独选通。
同时在段选信号输入口加上希望在该对应数据管上显示的数据,随着选通信号的扫描就能实现扫描显示的目的。
虽然每次只有一个LED显示,但只要扫描显示速率够快,由于人的视觉余辉效应,使我们任然感觉所有的数码管都在同时显示。
三、实验步骤:1、启动QuartusII建立一个空白工程,然后命名为scan_led。
2、Verilog HDL 源文件scan_led.v。
3、编写程序,编译。
如果编译出错,需要继续更正程序,直到编译没错为止。
4、添加常量兆功能模块。
Tools→Mega Wizard Plug-In Manager打开图示添加兆功能模块向导。
选择Create a new custom megafunction variation建一个新的兆功能模块。
点击next按钮,进入向导第二页,按下图进行选择和设置。
单击next进入向导第3页。
按下图进行选择和设置。
单击next进入向导第4页,单击finish完成常量兆功能模块的添加。
5、将代码生成模块。
file→new→Block Diaram/Schematic File双击右边框图空白处,出现下图界面选择如下选项调出电路完成电路图的连接6、设置顶层文件,设置引脚。
7、编译、下载。
观察数码管是否显示40710222。
四、实验结果和数据:1、程序代码:2、顶层电路图:五、实验总结:1、本实验用到三次编译,代码写完了编译一次,设置顶层编译一次,设置引脚编译一次。
2、实验用到了数码管的段选和位选。
3、通过该实了解了兆功能模块的添加。
实验六秒表一、实验目的:1、学习动态扫描显示的原理及电路的设计。
2、学习数字时钟的硬件设计。
3、熟悉Verilog HDL的编程方法。
二、实验原理和内容:在SmartSOCP实验箱上完成一个可以计时的数字时钟,其显示范围为一分钟。
利用两个分频电路,分别提供1ms扫描和1s计数。
三、实验步骤:1、建立工程,取名miaobiao2、建立源文件miaobiao.v,编写程序代码。
3、编译无误后设置引脚。
4、编译、下载。
观察数码管显示情况。
四、实验结果和数据:1、程序代码:2、实验图片采样:五、实验总结:1、通过该实验进一步巩固了分频电路的设置。
2、该实验用到了数码管的段选和位选功能。
3、该实验用到的always模块较多,所以务必要明白每个always模块之间有什么联系。