fpga从入门到放弃(一)基于vivado2018环境开发板Artix 7系列BASYS3(更新中)

  • 开发板资料在网上搜索BASYS3即可查到
  • 一个很简单的项目上手(按键控制灯的亮灭),主要练习vivado的使用
  • 主界面
    在这里插入图片描述
  • 新建工程
    在这里插入图片描述
    在这里插入图片描述
  • 给工程取名,注意不要带空格,next
    在这里插入图片描述
  • 首选项
    在这里插入图片描述
  • creat file
    在这里插入图片描述
  • 语言类型我们练习Veirlog
    在这里插入图片描述
  • constraits稍后添加,next
    在这里插入图片描述- 在搜索框搜索,选择器件,next
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
  • 可以看到界面是很好看的
    在这里插入图片描述
  • 双击打开
    在这里插入图片描述
  • 觉得界面太小也可以选择让窗口悬浮
    在这里插入图片描述
  • 写代码,保存
    在这里插入图片描述
        module led_switch(led,switch);
        output [1:0] led;
        input [1:0] switch;
        assign led[0] = switch[0];
        assign led[1] = switch[0] & switch[1];
        endmodule
  • 然后添加约束,对应到板子上的硬件
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 生成后,双击打开
    在这里插入图片描述
  • 添加约束,对应空格,注意管脚名称与板子上对应
set_property PACKAGE_PIN V17 [get_ports {switch[0]}] // switch[0]加括号{}因为switch[0]是数组

set_property IOSTANDARD LVCMOS33 [get_ports {switch[0]}] // LVCMOS代表CMOS3.3V电压

set_property PACKAGE_PIN V16 [get_ports {switch[1]}]

set_property IOSTANDARD LVCMOS33 [get_ports {switch[1]}]

set_property PACKAGE_PIN U16 [get_ports {led[0]}]

set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]

set_property PACKAGE_PIN E19 [get_ports {led[1]}]

set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}] 
  • 产生bitstream这是要写入板子的bit文件
    在这里插入图片描述
  • OK完事
    在这里插入图片描述
  • 开始运转,速度非常慢,不得不忍受,要是报错得重新回去调试
    在这里插入图片描述
  • 他实际上按这个流程跑下来
    在这里插入图片描述
  • 打开硬件管理器
    在这里插入图片描述
  • 没什么显示,别慌
    在这里插入图片描述
  • 看板子已经连接上了,点绿条里的Program device
    在这里插入图片描述
  • 一般文件夹的位置在这,有的同学不是就得手动找
    在这里插入图片描述
  • 如果没有programmed得手动选择
    在这里插入图片描述
  • 实验结果
    在这里插入图片描述在这里插入图片描述
  • 讲个笑话,一开始我连开机都不知道,得摁开关
    在这里插入图片描述
已标记关键词 清除标记
想做一个计数器, 当控制端mode为0时, 计数器由1至12递增, 当控制端mode为1时, 计数器由12至1递减, 同时将数字用basys3板上的数码管显示(利用扫描) 可是在basys3板上, 数码管运行停滞在03 代码如下 ``` `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 2017/11/28 08:42:53 // Design Name: // Module Name: dis // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// module dis( input clk, input mode, output reg[3:0] data, output reg[10:0] seg ); reg [4:0] count = 1; reg[20:0] number = 0; reg[20:0] number2 = 0; reg[2:0] sig = 0; reg[10:0] temp1; reg[10:0] temp2; always@(posedge clk) begin if (count == 1) begin data = 4'b0001; temp1= 11'b11101001111; temp2 = 11'b11010000001; end if (count == 2) begin data = 4'b0010; temp1 = 11'b11100010010; temp2 = 11'b11010000001; end if (count == 3) begin data = 4'b0011; temp1 = 11'b11100000110; temp2 = 11'b11010000001; end if (count == 4) begin data = 4'b0100; temp1= 11'b11101001100; temp2 = 11'b11010000001; end if (count == 5) begin data = 4'b0101; temp1 = 11'b11100100100; temp2 = 11'b11010000001; end if (count == 6) begin data = 4'b0110; temp1 = 11'b11100100000; temp2= 11'b11010000001; end if (count == 7) begin data = 4'b0111; temp1= 11'b11100001111; temp2 = 11'b11010000001; end if (count == 8) begin data = 4'b1000; temp1= 11'b11100000000; temp2= 11'b11010000001; end if (count == 9) begin data = 4'b1001; temp1= 11'b11100000100; temp2 = 11'b11010000001; end if (count == 10) begin data = 4'b1010; temp1 = 11'b11100000001; temp2 = 11'b11011001111; end if (count == 11) begin data = 4'b1011; temp1 = 11'b11101001111; temp2 = 11'b11011001111; end if (count == 12) begin data = 4'b1100; temp1= 11'b11100010010; temp2 = 11'b11011001111; end end always@(posedge clk) begin number = number + 1; number2 = number2 + 1; if (number2 == 100000) begin seg = temp1; end if (number2 == 200000) begin seg = temp2; number2 = 0; end if (number == 10000000) begin number = 0; count = count + 1; end if (mode == 0) begin count = (count ) % 12 + 1; end if (mode == 1) begin if (count == 1) count = 12; else count = count - 1; end end endmodule ```
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页