ALINX视频学习笔记(一)vivado初体验led工程

//小白入门记录,当电子笔记本来用,学习的视频来自b站ALINX官方。我所使用的板子就是购买的ALINX zynq7020,所以按照此教程进行学习。

【ALINX】FPGA ZYNQ视频教程——AX7010/AX7020教程——FPGA实验篇_哔哩哔哩_bilibili

led.v文件代码加注释

module led(
    input sys_clk,
    input rst_n,
    (* MARK_DEBUG="true" *)output reg [3:0] led
 //直接在HDL源代码中用(*MARK_DEBUG = “true”*)标识出要探测的信号
    );
(* MARK_DEBUG="true" *)reg[31:0] timer_cnt;
always@(posedge sys_clk or negedge rst_n)
begin
    if (!rst_n)
//如果reset active,全部reset
    begin
        led <= 4'd0 ;
        timer_cnt <= 32'd0 ;
    end
    else if(timer_cnt >= 32'd49_999_999)
//设置翻转条件,翻转后计数器归零
    begin
        led <= ~led;
        timer_cnt <= 32'd0;
    end
    else
//led保持不变,计数器加一
    begin
        led <= led;
        timer_cnt <= timer_cnt + 32'd1;
    end
end

Instantiate ila in source file
//ila ila_inst(
//  .clk(sys_clk),
//  .probe0(timer_cnt),
//  .probe1(led)
//  );

endmodule

约束引脚和时钟约束后自动生成的led.xdc约束文件代码段。1.其中约束引脚是通过“工具栏window-I/O ports”打开,对照使用手册选择引脚和电压值自动生成。2.时钟约束是通过左侧“综合-open synthesized design-constraints wizard”打开,选择时钟50MHz,自动生成。

set_property PACKAGE_PIN M14 [get_ports {led[0]}]
set_property PACKAGE_PIN M15 [get_ports {led[1]}]
set_property PACKAGE_PIN K16 [get_ports {led[2]}]
set_property PACKAGE_PIN J16 [get_ports {led[3]}]
set_property PACKAGE_PIN N15 [get_ports rst_n]
set_property PACKAGE_PIN U18 [get_ports sys_clk]
set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports sys_clk]

create_clock -period 20.000 -name sys_clk -waveform {0.000 10.000} [get_ports sys_clk]

生成比特流后可以通过open hardware manager下载比特流到板子。下面说仿真。

右键simulation-simulation settings可以进行仿真的设置。

进行仿真需要添加仿真的激励文件,“add sources-add or create simulation sources”,创建文件“vtf_led_test.v”,复制例程代码如下。

`timescale 1ns / 1ps
//
// Module Name: vtf_led_test
//

module vtf_led_test;
// Inputs
reg sys_clk;
reg rst_n ;
// Outputs
wire [3:0] led;

// Instantiate the Unit Under Test (UUT)
led uut (
    .sys_clk(sys_clk),   
    .rst_n(rst_n),
    .led(led)
 );

initial 
begin
// Initialize Inputs
    sys_clk = 0;
    rst_n = 0 ;
    #1000 ;
    rst_n = 1; 
end
//Create clock
always #10 sys_clk = ~ sys_clk;  

endmodule

后面是一些基本操作,run行为级仿真,

 仿真时,可以对信号进行设置,来显示我们想要的(比如计数器显示十进制数字而非16进制),点击信号右击,radix-real settings-选择fixed,或者直接选unsigned 十进制也行。

仿真1s,可以看到确实是1s时计数器达到4999_9999,led亮起来(F)了。

 仿真文件会占用目录内sim文件夹的资源,仿真时间久了会很大,没啥用的仿真可以删了。大文件在这个路径下面。

 在教程中后面就上电对板子进行操作了

后面要讲内嵌的逻辑分析仪的使用方法,就是要把板子内部实际的波形图通过IP“ila”导出来看到。

后面如果用的到ila再详细记录。学习到此结束。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值