网站建设深圳给源码,wordpress 站点维护,公司门户网站开发,做电商网站需要注册什么公司由于需要进行一些FPGA的简单开发#xff0c;但板载PL端没有焊接晶振#xff0c;所以需要从PS端借用时钟到PL端使用。
首先新建项目#xff0c;根据自己的板载选择芯片#xff0c;我的板载芯片是zynq_7010。 一路next#xff0c;在自己的vivado的工作文档新建文件夹并给自… 由于需要进行一些FPGA的简单开发但板载PL端没有焊接晶振所以需要从PS端借用时钟到PL端使用。
首先新建项目根据自己的板载选择芯片我的板载芯片是zynq_7010。 一路next在自己的vivado的工作文档新建文件夹并给自己新建的项目命名随后进行芯片选型由于我的板载芯片是zynq_7010所以做如下选择。确认无误后点击finish即可。
下面是创建好新工程的主界面点击创建block_design 根据自己需要是否修改设计名字不改也可。点击OK后进入如下界面点击“”在左上角搜索ZYNQ并选择唯一对应的Precessing System。 随后出现对应Processing System模块双击进入设置 选择Preihpheral IO PIns根据板载设置一般设置好QuadSPI和UART即可简单使用。 随后进入DDR的设置按如下步骤选择MemoryPart应是和板载芯片最接近的设置 随后按如下操作取消勾选得到最终的PrecessingSystem模块。 右键两个引脚选择自动接出如下图 随后点击左上角Sources选中刚刚创建的bp文件右击选择生成输出项目 点击Generate即可。 随后继续选中bp文件右击选择创建顶层文件点击OK 随后点击创建bit流文件而后默认点击Yes跳转后默认点击OK即可生成文件后弹出界面选择cancel即可不需要进行修改。 随后选择File选择导出将生成的bit流文件导出到硬件Hardware默认点击OK即可。但需要勾选中包含流文件including Stresming file 随后选择Launch SDK,启动PS端随后默认点击OK即可。
页面跳转至如下界面
随后依次点击左上角File选择New选择Application Project进行文件创建 根据自己情况为新创建的文件命名随后选择提供的空模板点击Finish即可。 随后单击选择新建好的工程文件夹找到src文件夹并新建main.c文件 双击打开新建好的main.c文件发现程序字号显示较小按下操作调整主界面字号选择Window-Preference-general-color and font,选择Text Font点击左侧Edit根据需要修改即可。 随后将下面的几行代码复制到新建的main.c文件中保存运行。
int main(void){while(1){}
} 随后选择工程文件选择Run as-Run Configuration 选中最下面的选项双击后勾选右侧界面的Reset entire system和ProgramFPGA随后点击run
随后切换到PL端给工程文件添加现有的LED闪烁的代码文件源文件 添加完后在Diagram主界面中右击选择添加model将刚刚添加到工程文件中的led闪烁文件模块加入到Diagram界面并连线将复位和led输出两个引脚选中并点击Make Externalm,最终如下图 随后点击右侧的Run Synthesis进行综合分析并进行IO引脚的配置结合板载的原理图
引脚配置完成后如下图 随后将保存的文件自行命名不需要和工程文件名字统一但不可以是中文字符随后点击OK 点击左侧左下角的生成bit流文件默认点击OK等待生成即可。
随后选中OpenTarget选择自动连接 auto connect 随后依次点击Program device -Program来将生成后的bit流文件下载烧写至板载中。
随后则可以观察到板载小灯闪烁上述过程成功。
另外在下面附上FPGA两个小灯交替闪烁的代码
timescale 1ns / 1ps
module test_led003(input sys_clk,input sys_rst_n,output [1:0] led
);reg [25:0] cnt;
assign led (cnt26d25_000_000) ? 2b01 : 2b10;
always (posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n)cnt 26d0;else if (cnt 26d50_000_000)cnt cnt 1b1;elsecnt 26d0;end
endmodule
另附上修改后的三个小灯连续闪烁的代码注意修改对应的管脚分配
timescale 1ns / 1ps
module test_006(input sys_clk,input sys_rst_n,output [2:0] led // 修改为3位宽控制三个LED
);
//reg define
reg [25:0] cnt;
wire [2:0] led_state; // 定义一个3位宽的wire用于存储LED状态// 使用case语句来实现三个LED的交替闪烁
assign led_state (cnt 26d25_000_000) ? 3b001 : // 当计数器大于25,000,000时LED1亮(cnt 26d12_500_000) ? 3b010 : // 当计数器大于12,500,000时LED2亮3b100; // 否则LED3亮assign led led_state; // 将led_state的值赋给led输出always (posedge sys_clk or negedge sys_rst_n) beginif (!sys_rst_n)cnt 26d0;else if (cnt 26d50_000_000)cnt cnt 1b1;elsecnt 26d0;
end
endmodule