第一周课内实验 实验报告

一、创建一个新的工程

1.首先,新建一个空工程

(1.)打开软件-new Project Wizard

请添加图片描述

(2.)设置空工程

请添加图片描述

  • 设置工程的存储路径、名称和其中的顶层文件名

    顶层文件名默认与工程文件名相同

请添加图片描述

  • 选择工程类型:空工程

请添加图片描述

  • 添加文件:

    如果已有设计文件,在当前页面选择并添加,点击Next

请添加图片描述

  • 器件选择

    根据开发平台使用的FPGA选择对应器件

请添加图片描述

  • EDA工具选择

    如果有需要可以选择第三方的综合或仿真工具(第三方工具需要另外安装并设置启动路径),这里我们选择使用modelsim工具仿真,点击Next。
    请添加图片描述

  • 最后确认工程设置无误

    有误back;无误finish。

请添加图片描述

2.添加设计文件

  • 新建设计文件

请添加图片描述

  • 编写代码
    • 在如下区域进行
    • 编写完成后务必进行保存,在保存时可以进行修改文件名

请添加图片描述

  • 对代码进行分析综合

    若设计没有问题,综合Tasks栏中Analysis & Synthesis会变成绿色,同时左侧出现绿色对勾。
    请添加图片描述

请添加图片描述

  • 可以查看RTL电路:

请添加图片描述

在这里插入图片描述

3.管脚约束

  • 器件和管脚配置

    如下图,配置好后OK关闭

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 管脚分配

    如下图配置,配置好后直接关闭,软件会自动保存

在这里插入图片描述

  • 开始所有编译

    等待Tasks列表中所有选项完成

在这里插入图片描述

4.FPGA加载

  • 连接仪器-烧录:

    使用micro-usb线将STEP-MAX10二代开发平台连接至电脑USB接口,选择菜单栏中Tools→Programmer选项 或 工具栏中Programmer按钮,进入烧录界面。

在这里插入图片描述

  • 添加文件-勾选-加载

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

至此烧录完成,FGEA板上LD1和LD8两灯交替闪烁

二、仿真工具ModelSIM的使用

1.首先准备好测试文件

  • 保存并命名为LED_shining_tb.v
  • 并确定其所有的编译正常

2.在仿真选项界面中添加该文件

请添加图片描述
请添加图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.在Quartus Prime中启动Modelsim软件

请添加图片描述

  • Modelsim软件启动后自动完成编译,界面如下:

请添加图片描述

4.观察波形

  • 添加要观察的波形

    选中-直接移动到wave左窗口或者选中-右键-add wave

  • 运行生成波形:

请添加图片描述

  • 波形如图:

请添加图片描述

三、点亮LED

1.实验目的

  • STEP-MAX10开发板虽然很小巧但也集成了不少外设,在本实验里我们就学习如何用FPGA控制简单外设(如何用按键或者开关控制LED的亮和灭)。

请添加图片描述

2.代码

// Module Function:利用按键和开关的状态来控制LED灯的亮灭。
 
module LED (key,sw,led);
 
	input [3:0] key;						//按键输入信号
	input [3:0] sw;							//开关输入信号
	output [7:0] led;						//输出信号到LED
 
	assign led = {key,sw};                                          //assign连续赋值。大括号是拼接符,表示把key和sw拼接组成一个新的8位数赋值给led
 
endmodule

3.引脚分配

  • 综合(synthesize)完成之后一定要配置FPGA的引脚到相应的外设,这样下载FPGA程序后才能达到我们想要的效果。

请添加图片描述

4.下载程序

请添加图片描述

5.效果演示

请添加图片描述

总结:实现了四个开关加上四个按键分别控制8个LED管

四、数码管显示

1.实验目的

  • 认识数码管及其输入码和输出码
  • 认识数码管的发光原理

2.硬件认识

  • 数码管所有的信号都连接到FPGA的管脚,作为输出信号控制。FPGA只要输出这些信号就能够控制数码管的那一段LED亮或者灭。这样我们可以通过开关来控制FPGA的输出,和3-8译码器实验一样,通过组合逻辑的输出来控制数码管显示数字,下面是数码管显示的表格:

请添加图片描述

2. 代码

// Module Function:数码管的译码模块初始化
 
module segment (seg_data_1,seg_data_2,seg_led_1,seg_led_2);
 
	input [3:0] seg_data_1;						//数码管需要显示0~9十个数字,所以最少需要4位输入做译码
	input [3:0] seg_data_2;						//小脚丫上第二个数码管
	output [8:0] seg_led_1;						//在小脚丫上控制一个数码管需要9个信号 MSB~LSB=DIG、DP、G、F、E、D、C、B、A
	output [8:0] seg_led_2;						//在小脚丫上第二个数码管的控制信号  MSB~LSB=DIG、DP、G、F、E、D、C、B、A
 
        reg [8:0] seg [9:0];                                            //定义了一个reg型的数组变量,相当于一个10*9的存储器,存储器一共有10个数,每个数有9位宽
 
        initial                                                         //在过程块中只能给reg型变量赋值,Verilog中有两种过程块always和initial
                                                                        //initial和always不同,其中语句只执行一次
	    begin
              seg[0] = 9'h3f;                                           //对存储器中第一个数赋值9'b00_0011_1111,相当于共阴极接地,DP点变低不亮,7段显示数字  0
	      seg[1] = 9'h06;                                           //7段显示数字  1
	      seg[2] = 9'h5b;                                           //7段显示数字  2
	      seg[3] = 9'h4f;                                           //7段显示数字  3
	      seg[4] = 9'h66;                                           //7段显示数字  4
	      seg[5] = 9'h6d;                                           //7段显示数字  5
	      seg[6] = 9'h7d;                                           //7段显示数字  6
	      seg[7] = 9'h07;                                           //7段显示数字  7
	      seg[8] = 9'h7f;                                           //7段显示数字  8
	      seg[9] = 9'h6f;                                           //7段显示数字  9
            end
 
        assign seg_led_1 = seg[seg_data_1];                         //连续赋值,这样输入不同四位数,就能输出对于译码的9位输出
        assign seg_led_2 = seg[seg_data_2];
 
endmodule

4.引脚分配

请添加图片描述

5.程序下载同上

6.效果图

分别是0 、 1 、 3 、 7
请添加图片描述

五、心得体会

  • 当按键断开时,FPGA输入为高电平,当按键按下时,FPGA输入为低电平;当开关断开(OFF)时,FPGA输入为低电平,当开关合上(ON)时,FPGA输入为高电平。

  • 【注】:工程实现流程:(重要)

    • 新建工程

    • 器件选择

    • 软件设置

    • 代码实现

    • 编译

    • 管脚分配

    • 再次编译

    • 下载到 FPGA

  • 通过这次实验,我对在实验中学习体会更加深刻了。比如软件的安装和基本使用,这些都是通过一遍又一遍实验中慢慢熟练的。

  • 通过这次实验,我的自学能力得到了很大的提高。

猜你喜欢

转载自blog.csdn.net/m0_51288996/article/details/120386519
今日推荐