思考题:
(1)总结Zynq FPGA设计流程,将实验步骤与软件设计流程对照分析,
分析每一步生成了什么文件,各有什么作用;
(2) 分析本实验中用到的verilog源代码,特别对使用到的原语进行分
析说明;
//-----------------------------------------------------------------------------
//
// (c) copyright 2013 Tronlong, Inc. All rights reserved.
//
//-----------------------------------------------------------------------------
`timescale 1ns / 1ps
module tl_led_flash(
output reg [1:0] led // led gpio output
);
// Delay lenght: 32_500_000, 500ms, by used 65MHz cfgmclk
parameter DELAY_LEN = 26'd3249_9999;
reg [26:0] delay_cnt;
wire cfgmclk;
wire eos_n;
STARTUPE2 #()
STARTUPE2_inst (
.CFGMCLK(cfgmclk), // 1-bit output: Configuration internal oscillator clock output 65MHz.
.EOS(eos_n) // 1-bit output: Active high output signal indicating the End Of Startup.
);
// Led flash with delay counter by cfgmclk
always@(posedge cfgmclk or negedge eos_n)
if(!eos_n)
begin
delay_cnt <= 26'd0; // reset delay_cnt
led <= 2'b0; // led output low
end
else if(delay_cnt == DELAY_LEN)
begin
delay_cnt <= 26'd0; // reset delay_cnt;
led <= ~led; // change led output status;
end
else
delay_cnt <= delay_cnt + 1'b1;
endmodule
源代码分析:
tl_led_flash模块内部振荡时钟cfgmclk为65MHz,标志信号eos_n为1时启动结束,输出为两位的寄存器led,控制开发板上的两个LED灯闪烁。
时间间隔=计数次数DELAY_LEN**时钟频率=3250000065Mhz=500ms
原语分析
使用了STARTUPE2原语,其一般声明如下:
STARTUPE2_inst
(
.CFGCLK(), // 1-bit output: Configuration main clock output
.CFGMCLK(), // 1-bit output: Configuration internal oscillator clock output
.EOS(), // 1-bit output: Active high output signal indicating the End Of Startup.
.PREQ(), // 1-bit output: PROGRAM request to fabric output
.CLK(0), // 1-bit input: User start-up clock input
.GSR(0), // 1-bit input: Global Set/Reset input (GSR cannot be used for the port name)
.GTS(0), // 1-bit input: Global 3-state input (GTS cannot be used for the port name)
.KEYCLEARB(1), // 1-bit input: Clear AES Decrypter Key input from Battery-Backed RAM (BBRAM)
.PACK(1), // 1-bit input: PROGRAM ackNowledge input
.USRcclKO(flash_clk), // 1-bit input: User cclK input
.USRcclKTS(0), // 1-bit input: User cclK 3-state enable input
.USRDONEO(1), // 1-bit input: User DONE pin output control
.USRDONETS(1) // 1-bit input: User DONE 3-state enable outpu
);
该代码转载自:https://blog.csdn.net/jiuzhangzi/article/details/79471365
有的项目需要远程更新固件,更新完成后断电、重启即可。那远程更新是如何实现的呢?用的最多的应该是以太网或者自定义的局域网为主,当然还可以使用pcie、串口之类的,像xilinx还有golden image,以防止远程更新失败启动不起来,它主要是flash存有两个启动文件,正常情况下启动默认的,当默认的被损坏,就从备用的启动。本文章主要讲解的是STARTUPE2原语,这和远程更新有什么关系呢?请接着向下看。
fpga掉电丢失时,使用外部flash存储代码,flash有spi、bpi、qspi等接口,外部存储器的时钟管脚一般与fpga的cclK_0连接,当使用远程更新时,首先fpga内部有控制flash的驱动(即逻辑控制flash时序),当然flash时钟也需要控制了,但这时时钟管脚已经连接到cclK_0,那该如何操作啊,你直接约束分配管脚试试
其中flash_clk就是你时序控制的flash时钟信号,连接到这就行了,其它的不需要改动,也无需约束此管脚(因为此管脚不需要在顶层作为输出信号了)。当然你也可以例化qspi ip看里面是如何使用的。
顺便说一下,对于数据信号,一般是inout类型,对于单bit可以如下使用:
(3) 分析本实验中的约束文件,尝试使用图形界面生成约束文件;
本实验的约束文件如下:
set_property PACKAGE_PIN F16 [get_ports {led[0]}]
set_property PACKAGE_PIN M14 [get_ports {led[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]
# enable bitstream compression
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
(4) 查看生成的各种报告文件,描述生成的报告的含义;
(5) 查看编译后得到的原理图,分析其大致功能;
(6) 查看布局布线后的版图,查找7020 FPGA资料,将版图与FPGA
内部资源做对比,分析设计用到的模块的作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。