Basys3电路板初体验

功能和目的

利用开发板 4 个 7 段数码管依次显示数字“1234”和“4321”。通过SW0按键选择数码管是顺序显示数字还是逆序显示数字。

如:当 SW0=1 时显示“1234”;
当 SW0=0 时显示“4321”。

要求:
1.给出行为仿真波形;
2.将程序烧录到 ROM 里面(对当前版本vivado似乎不再适用);
3.开发板演示。

项目的创建

创建源文件

  1. 打开vivado2020.1,选择create project,点击next;

  2. 进入如下界面,注意各级目录必须全部是英文在这里插入图片描述

  3. 点击next,选择RTL Project,再次点击next;

  4. 进入Add Source界面后选择create file,将语言设置为System Verilog,再设置文件名称,再点击next;在这里插入图片描述

  5. 再次点击next,跳过Add Constraint部分;

  6. 按下图进行勾选;在这里插入图片描述
    在这里插入图片描述

  7. 进入如下窗口,点击Finish;在这里插入图片描述

  8. 设置源文件模块的名称,这里我们随便将其设置为self;在这里插入图片描述

  9. 我们的项目初具雏形(源文件代码在后文)。

创建仿真文件

  1. 点击Add Source,选择第三项;在这里插入图片描述

  2. 点击Create File。为了便于理解,设置仿真文件名称为tb_self,注意语言的选择;
    在这里插入图片描述

  3. 点击Finish。这里不必再次设置仿真文件的模块名称,因为我们将稍后把全部代码粘贴过来。仿真文件创立完毕(代码在后文)。

创建约束文件(分配引脚)

  1. 点击Add Source,选择第一项;
  2. 点击Create File。为了便于理解,设置约束文件名称为cons_self;
  3. 此时项目内部的文件如下;
    在这里插入图片描述
  4. 代码将出现在后文。

运行步骤

仿真与综合

  1. 点击Run Simulation,选择Run Behavioral Simulation,稍后弹出仿真波形窗口,如图所示;在这里插入图片描述
  2. 单击Run Synthesis,点击OK,稍后弹出如下窗口;在这里插入图片描述
  3. 再次点击OK,稍后弹出如下窗口,按下图勾选;在这里插入图片描述
  4. 再次点击OK,稍后弹出如下窗口,按下图勾选;在这里插入图片描述

下载程序到FPGA

  1. 点击下图中的Open a new hardware target(再次操作时没有这一步);在这里插入图片描述
  2. 一直点击next,直至finish;
  3. 进行如下操作;在这里插入图片描述
  4. 我们的板子按照1234亮起来啦!惊不惊喜,意不意外!

代码

源文件代码

`timescale 1ns / 1ps

module display(
    input logic CLK,
    input logic SW_in,					//决定是1234模式还是4321模式
    output logic [10:0] display_out
    );

parameter Time = 50000;			//这里将时间定为一个参数,便于理解和修改

    logic [2:0]sel = 0;						//sel信号决定亮起来的是四个数码管中的哪一个
    logic [19:0]count = 0;				//count最大是50000,因此20位2进制数是足够的

    always@(posedge CLK) begin
        if(SW_in==0) begin
            case(sel)
            0:display_out <= 11'b0111_1001111;
            1:display_out <= 11'b1011_0010010;
            2:display_out <= 11'b1101_0000110;
            3:display_out <= 11'b1110_1001100;
            default:display_out <= 11'b1111_1111111;
            endcase
        end
        else begin
            case(sel)
            0:display_out <= 11'b1110_1001111;
            1:display_out <= 11'b1101_0010010;
            2:display_out <= 11'b1011_0000110;
            3:display_out <= 11'b0111_1001100;
            default:display_out <= 11'b1111_1111111;
            endcase
        end
    end

    always_ff@(posedge CLK) begin
        if(count == Time) begin
            sel <= sel + 3'd1;
            if( sel == 3'd4) begin
                sel <= 3'd0;
            end
            count <= 11'd0;
        end
        else begin
            count <= count + 11'd1;
        end
    end
endmodule

仿真文件代码

`timescale 1ns / 1ps


module tb_display(

    );

    logic CLK;
    logic SW_in;
    logic [10:0] display_out;

    display duc(
        .CLK(CLK),
        .SW_in(SW_in),
        .display_out(display_out)
    );

    initial begin
        CLK = 1'd0;
        SW_in = 1'd0;
        #20;
        SW_in = 1'd1;
    end

    always #5 CLK = ~CLK;
    
endmodule

约束文件代码

set_property PACKAGE_PIN W5 [get_ports CLK]
set_property PACKAGE_PIN V17 [get_ports SW_in]
set_property IOSTANDARD LVCMOS33 [get_ports SW_in]
set_property IOSTANDARD LVCMOS33 [get_ports CLK]
set_property PACKAGE_PIN W4 [get_ports {display_out[10]}]
set_property PACKAGE_PIN V4 [get_ports {display_out[9]}]
set_property PACKAGE_PIN U4 [get_ports {display_out[8]}]
set_property PACKAGE_PIN U2 [get_ports {display_out[7]}]
set_property PACKAGE_PIN W7 [get_ports {display_out[6]}]
set_property PACKAGE_PIN W6 [get_ports {display_out[5]}]
set_property PACKAGE_PIN U8 [get_ports {display_out[4]}]
set_property PACKAGE_PIN V8 [get_ports {display_out[3]}]
set_property PACKAGE_PIN U5 [get_ports {display_out[2]}]
set_property PACKAGE_PIN V5 [get_ports {display_out[1]}]
set_property PACKAGE_PIN U7 [get_ports {display_out[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {display_out[9]}]
set_property IOSTANDARD LVCMOS33 [get_ports {display_out[8]}]
set_property IOSTANDARD LVCMOS33 [get_ports {display_out[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {display_out[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {display_out[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {display_out[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {display_out[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {display_out[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {display_out[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {display_out[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {display_out[10]}]

电路板展示


1:两种模式切换;
2:复位按钮;
3:开关。

  • 11
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Basys3介绍: Digilent 的 Basys3 是一款采用 Xilinx Artix 7 FPGA 架构的入门级 FPGA 板,专门用于 Vivado 设计套件。 Basys3 是广受欢迎的 Basys 入门级 FPGA 板系列的最新成员。 Basys3 具有所有 Basys 板的标准特性:全套现成的硬件、大量板载 I/O 设备、所有必要的 FPGA 支持电路和免费版开发工具,且全部以学生价格提供。 Basys3原理图截图: Digilent 现在推出 Basys3,通过提升特性集为学生们带来更好的专业级工程代表产品。 这些改进包括: 更多 I/O: 双用户接口开关、双板载输出数量、升级了外部端口(从 6 引脚、单排 Pmod 到 12 引脚、双排 Pmod)和 USB UART 桥接器。 现代编程的挑战: 由于从 Spartan 3E 系列到 Artix 7 类器件的迁移,Basys3 增加了大量硬件功能。 这款新型 Artix FPGA 器件逻辑单元数提升了 15 倍(从 2,160 到 33,280),从倍增器升级到真正的 DSP 切片。 该器件的 RAM 还增加了 26 倍以上。 业内首款 SOC 加强型设计套件: 对 Basys3 的最大变化就是升级到 Xilinx Vivado 设计套件。 Vivado 设计套件是全球专业工程师使用的最先进设计工具链。 Vivado 凭借扩充的功能改进了 ISE 的用户体验,如与 Vivado IP 积分器的基于块的 IP 的集成,将开发时间减少到 1/10 的 Vivado 高级合成(仅可用于 Vivado 系统版),以及带 DSP 系统发生器的基于模型的 DSP 设计集成。 特性 5200 个切片中有 33,280 的逻辑单元(每个切片包含四个 6 输入 LUT 和 8 个触发器) 1,800 Kb 的快速块 RAM 5 个时钟管理模块,每个都提供锁相环 (PLL) 90 个 DSP 切片 超过 450 MHz 的内部时钟速度 片载模数转换器 (XADC) 16 个用户开关 16 个用户 LED 5 个用户按钮 4 位 7 段显示 4 个 Pmod 连接器3 个标准 12 引脚 Pmod 1 个双用途 XADC 信号/标准 Pmod 12 位 VGA 输出 USB UART 桥接器 串行闪存 用于 FPGA 编程和通信的 Digilent USB JTAG 端口 用于鼠标、键盘和记忆棒的 USB HID 主机 实物购买链接:https://www.eeboard.com/shop/?c=products&a=index&_k...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值