黑金AX7020开发板原理图学习分享第三部分 DDR芯片解析及 点亮第一盏灯

文章详细介绍了DDR芯片的工作原理,包括其双倍数据传输率、Prefetch技术,以及基础引脚功能。接着,通过一个实例展示了如何使用FPGA(以H5TQ4G63AFR为例)点亮LED灯,包括源文件编程、XDC管脚约束和仿真过程。
摘要由CSDN通过智能技术生成

一、DDR芯片详解

1. 硬件连接 

图1.1 FPGA端DDR连接

图1.2 H5TQ4G63AFR端连接

2. DDR SDRAM主要特征及基础引脚

2.1 数据传输

DDR传输相较于SDR速度快了一倍,原因:SDR仅在时钟上升沿传输数据,DDR信号上、下沿同时传输数据,50MHz时钟,DDR传输速率可达100Mb/s。

2.2 Prefetch技术

一个内核时钟周期可同时寻址多个存储单元并将这些数据以并行的方式统一传输到IO Buffer中,之后以更高的速度将IO Buffer中的数据传输出去。

2.3 DDR SDRAM 基础引脚

1. CKE I 时钟使能信号,高有效。用途:1关闭时钟进入省电模式,2进入自刷新状态。

2. CS# I 片选信号,低有效。片选信号有效后,DDR才能识别控制器发送的命令,设计时注意上拉。

3. RAS# I 行地址选通信号,低电平有效。

4. CAS# I 列地址选通信号,低电平有效。

5. WE# I 写使能信号,低电平有效。

3. H5TQ4G63AFR

3.1 电源

表3.1.1 芯片电源

3.2 引脚

2.3内已经介绍的引脚在此不再赘述。

表3.1.2 芯片引脚

二、点亮第一盏灯

1. 工程创建及程序编写

由图可知4个LED分别挂在FPGA BANK35的M14、M15、K16、J16引脚上。

根据原理图设计可知当LED1即FPPGA BANK35的M14引脚输出低电平,LED5点亮。

1.1 源文件程序编写

编写“led.v”,这里定义了一个 32 位的寄存器 timer, 用于循环计数 0~49999999(1 秒钟), 计数到 49999999(1 秒)的时候, 寄存器 timer 变为 0,并翻转四个 LED。这样原来 LED 是灭 的话,就会点亮,如果原来 LED 为亮的话,就会熄灭,编写好代码后保存。[1]

源代码:

`timescale 1ns / 1ps

module led(

    input sys_clk,

    input rst_n,

    output reg [3:0] led

    );

reg[31:0] timer_cnt;

always@(posedge sys_clk or negedge rst_n)

begin

    if(!rst_n)

    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

    begin

        led<=~led;

        timer_cnt<=timer_cnt+32'd1;

    end

end

endmodule

1.2  编写XDC管脚约束文件

Vivado 使用的约束文件格式为 xdc 文件。xdc 文件里主要是完成管脚的约束,时钟的约束, 以及组的约束。需要对 led.v 程序中的输入输出端口分配到 FPGA 的真实管脚上。 

set_property PACKAGE_PIN J16 [get_ports {led[3]}]

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

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 PACKAGE_PIN K16 [get_ports {led[2]}]

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

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

set_property PACKAGE_PIN N15 [get_ports rst_n]

set_property PACKAGE_PIN U18 [get_ports sys_clk]

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]

XDC 编写语法,普通 IO 口只需约束引脚号和电压,管脚约束 

如下: set_property PACKAGE_PIN "引脚编号" [get_ports “端口名称”] 

电平信号的约束如下: set_property IOSTANDARD "电平标准" [get_ports “端口名称”]

create_clock -period 20.000 -name sys_clk -waveform {0.000 10.000} [get_ports sys_clk]为50M时钟

1.3仿真文件编写及仿真波形

`timescale 1ns / 1ps

module vtf_led_test;

//input

reg sys_clk;

reg rst_n;

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

图1.3.1仿真波形图

vivado安装包及LED工程文件连接:

链接:https://pan.baidu.com/s/1BnjrSLnDaeA-_KFAPDEgcA 

提取码:es55

注释:

[1]该部分内容参考cource_s1_ALINX_ZYNQ(AX7010_AX7020)2019版开发平台FPGA教程V1.02

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钱多多小姐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值