�����Զ����豸�ȶ��Կ��Ƶ���Ч������ʩ
��Ѷ���ڽ�����ҵ�����������̽����ʵ��
600MW������ѭ��ˮϵͳ��ͨ���췽��������
ʱ�䣺2021��04��28�� �������ࣺ�������� ���������
ժ Ҫ��Zynq7000ϵ�л���Xilinxȫ�ɱ�̵Ŀ���չ����ƽ̨�ṹ��һ��SoCоƬ��������Cortex-A9˫��ARM��FPGA��Xilinx��˾Ϊ����ṩ����IP�ˣ���Vivado��IP Catalog�п��Բ鿴����ʱ��ЩIP�˸��ӣ����߲�����ȫ�����û��������Xilinx��˾Ϊ�û��ṩ�û�
����ժ Ҫ��Zynq7000ϵ�л���Xilinxȫ�ɱ�̵Ŀ���չ����ƽ̨�ṹ��һ��SoCоƬ��������Cortex-A9˫��ARM��FPGA��Xilinx��˾Ϊ����ṩ����IP�ˣ���Vivado��IP Catalog�п��Բ鿴����ʱ��ЩIP�˸��ӣ����߲�����ȫ�����û��������Xilinx��˾Ϊ�û��ṩ�û����Դ��������Լ���IP�ˣ�ϵͳ�����ƣ�����ơ����Ľ�����Zynq7000ϵ��оƬ�����Vivado�н���AXI�������͵�IP�ˣ�ʵ���Զ���IP�ˣ������顣
�����ؼ��ʣ�Z7 �Զ���IP AXI����
����1 ����
����Zynq-7000ϵ��о����������ARM������ϵͳ���������˫�˵�CortexTM-A9�������������������Ĵ���Դ�����Ϊ���ģ�������������ϵͳ�м������ڴ�������ʹ��������裬ʹCortexTM-A9�ĺ���Zynq-7000����ȫ�����ڿɱ������Ԫ����Zynq-7000ϵ��оƬ����ARM��PS���֣���FPGA����(PL)������PS����������Cortex™-A9��������AMBA®�������ڲ��洢�����ⲿ�洢���ӿں����衣��Щ������Ҫ����USB���߽ӿڣ���̫���ӿڣ�SD/SDIO�ӿڣ�I2C���߽ӿڣ�CAN���߽ӿڣ�UART�ӿڣ�GPIO�ȡ�PS��PL���ֿ���Эͬ������Ҳ���Զ���������
�����������ְ֪ʶ�������Ӧ���о��ڿ�Ͷ�������Ҫ��
����Ϊ�����û�����ʹ�ã�xilinx��˾�ṩ�����IP�ˣ���ʱ����Щ�ӿ�ʱ���ӣ�������ʵ��Ӧ�ã���ˣ�xilinx��˾���ṩ���Զ���IP�ķ����������û��ĸ�������ͬʱ�ṩ�˵��͵Ľӿ�ip���û�ʹ�á������Զ���IP�ķ���ʵ��PS-PLͨ�Žӿ���ʹ��Xilinx�ṩ��IP��װ���ߣ����û������װ��Ϊ��AXI������ʽģ�飬��ģ����ͼ�λ��ķ�ʽ���붥���ļ��в�����AXI���ߵ��Զ����ӣ����ַ�ʽΪ�û��ṩ��ϵͳ�������Ի��ķ���
����2 �����µ�ϵͳ����
��������ʹ�úڽ�������Զ���IP�ķ������ڽ���ʹ�õ�оƬΪXilinx��˾��xc7z020clg400-2�����巽�����£�
����1)��Vivado�����������½���һ������Ϊtest_IP���̣�������һ����Ϊsystem��Block Diagram�ļ������ڸ�ԭ��ͼ�����ZYNQ7 Processing System�ں�ϵͳ��
����2)˫��Diagram�������ZYNQ Processing System,��ZYNQϵͳ�����ý��档
��������Page Navigator��������8������ֲ�ΪZynq Block Design, PS-PL Configuration, Peripheral I/O Pins, MIO Configration, Clock Configuration, DDR Configuration, SMC Timing Calculation, Interrupts����Щҳ��ѡ���Ӧ����ZYNQ�IJ�ͬͬӲ��ģ������ã�����PS_PLҳ���ṩ��PS��PL����ؽӿ�������Ϣ�Լ�PS����һЩ������Ϣ;Peripheral I/O Pinsҳ����Ҫ�Ƕ�һЩͨ������ӿڵ�����;MIO Configruationҳ����Ҫ�Ƕ�MIO�Ѿ�EMIO�ķ������;Clock Configruationҳ����Ҫ�Ƕ�PS��ʱ����Դ�����ú���;DDR Configrationҳ����Ҫ�Ƕ�DDR������һЩ����������;Interruptsҳ����Ҫ�Ƕ��жϽ������ù���
����2.1) ���Peripheral I/O Pinsѡ�
������AX7020�������ϣ� MIO48��MIO49�����ӵ�UARTоƬ�ϣ�����Ϊ����ͨ��ʹ�õġ�����������ó�UART1�Ĺ��ܣ����MIO48,49��Ӧ��UART1, �������ɫ�ᷢ����ɫ�����MIO48,49�ĹܽŹ��̶ܾ��ˣ�ֻ����ΪUART�Ĺ��ܡ�����MIO48Ϊ���ڷ��ͣ�MIO49Ϊ���ڽ��ա�
����2.2)���PS-PL Configurationѡ�
������GemeralĿ¼�£����Կ���UART1�IJ�����115200,���ѡ��115200�����Ը�����Ҫ���ġ� ��Ϊ��ʵ����û���õ�PL�������裬���Ծ�û��PL��������Ҫ�ҵ�AXI�������ϣ�Ҳ�Ͳ���ҪAXI GP0��Master�����ˣ���������FCLK_RESET0_N��M AXI GP0 interface��ѡ��ȥ����
����2.4) ���Clock Configuration�ꡣ
��������������ʾZYNQϵͳ��һЩʱ�ӣ���������ʱ����33.33333Mhz, �뿪?����ϰmPS?mϵͳʱ����һ���ǡ�CPU�Ĺ���ʱ����666.666666Mhz, DDR�Ĺ���ʱ����533.333333Mhz����Щʱ��Ƶ��Ĭ�ϡ�
�������ڱ�ʵ����û���õ�PL�������裬���Կ���PL��FCLK_CLK0ǰ���ѡ��ȥ��,�������FCLK_CLK0��
����2.5) ��DDR Configrationѡ�
���������������ѡ��DDRоƬ�����ƺ�һЩ�������˽�����Memory Partѡ������Ҫѡ�����������DDR3�ͺ�һ�������ƣ�AX7020������ѡ��MT41J256M16 RE-125��
����������ɵ��OK�˵�Vivado�Ŀ���������
����3 �Զ���IP����
����1) �����Զ���IP��
����1.1)����˵�Tools->Create and Package IP;
����1.2)���next��ѡ��Create a new AXI4 peripheralѡ��;
����1.3)��ʾIP�����֣��汾����������Ϣ�������������IP�����ּ�test_IP�ʹ��λ��;
����1.4)��ʾAXI���߽ӿ����֣��ӿ���Slave, ���ݿ����32λ��IP�ڲ��ļĴ�������Ϊ4����Ĭ��ѡ����Next;
����1.5)���Finish��ɡ�
����2)����Զ���IP�˵Ĺ��ܡ�
����2.1)��IP Catalog���棬�Ҽ�ѡ��test_IP_ip_v1.0, Ȼ��ѡ��Edit in IP Packagerѡ��;
����2.2) ���OK�� ������Զ�������һ��Vivado���ڶ��û��Զ����IP�˽��б༭;
����2.3)˫�������ļ�test_IP_ip_v1_0.v����“users to add ports here”λ����ӹܽŶ˿ڶ��壬���£�
����output wire SX_PRF,
����output wire SX_TR,
����input wire sys_clk,;
����2.4) �ڶ����ļ�test_IP_ip_v1_0.v�ij���ԹܽŽ�������,���£�
����.SX_PRF(SX_PRF),
����.SX_TR(SX_TR),
����.sys_clk(sys_clk),;
����2.5) ��˫����rtc_ip_v1_0_s00_AXI.v�ļ���������?mλ����ӵĹܽŶ˿ڶ������£�
����output wire SX_PRF,
����output wire SX_TR,
����input wire sys_clk,;
����2.6)��“Add user logic here”λ�����ʵ�ֲ���TR��PRF�źŵĴ������£�
����reg[18:0] timer_cnt;
����reg SX_PRF1;
����reg SX_TR1;
����always@(posedge sys_clk)
����if(slv_reg0==32'd1)
����begin
����if(timer_cnt >= 19'd265000)
����timer_cnt<= 1'd0;
����timer_cnt = timer_cnt + 1'd1;
����case(timer_cnt)
����19'd0: begin SX_PRF1<=1'b1;SX_TR1<=1'b1;end
����19'd1000: begin SX_PRF1<=1'b0;SX_TR1<=1'b0;end
����19'd7500: begin SX_PRF1<=1'b1;end
����19'd8500: begin SX_PRF1<=1'b0;end
����19'd40000: begin SX_PRF1<=1'b1;end
����19'd41000: begin SX_PRF1<=1'b0;end
����19'd265000: begin SX_PRF1<=1'b1;SX_TR1<=1'b1;end
����default:begin SX_PRF1 <= SX_PRF1; SX_TR1 <= SX_TR1; end
����endcase
����end
����else
����begin
����SX_PRF1<= 0;
����SX_TR1<= 0;
����timer_cnt <= 0;
����end
����assign SX_TR=SX_TR1;
����assign SX_PRF=SX_PRF1;
����2.7) ���Save All Files�������ļ�;
����2.8)˫��IP-XACT�µ�component.xml�ļ������ص�Package IP-test_IP_ip���ڣ����Port and Interfaces�꣬���Merge changes from Ports and Interface Wizard��
����2.9) �ٶ�ǰ��û�д�d File Groups���Merge changes from File Groups Wizard�������ļ��������� ѡ��Review and Packageѡ�Ȼ����Re-Package IP����IP�˵����á��ر�IP�˵�Vivado���̣��ص�ϵͳ���̽��档
����4 ���Լ���ļ�
����1)��Diagram���ڣ��Ҽ�����հ״���ѡ��Add IP��ѡ��test_IP_ip_v1.0˫����ӡ�
����2)���Run Connection Automationѡ� ѡ��All Automation��ʹϵͳ�Զ����Ӷ˿ڣ����Run Block Automationѡ� ѡ��timer_cnt��reg SX_PRF��reg SX_TR�������ܽţ��Ҽ�ѡ��Make External��
����3)��Source������ѡ��system.bd,�Ҽ���ѡ��Generate Output Projects��Create HDL Wrapperѡ��
����4)��xdc�ļ�����ӹܽ�Լ�������£�
����set_property IOSTANDARD LVCMOS33 [get_ports SX_PRF]
����set_property IOSTANDARD LVCMOS33 [get_ports SX_TR]
����set_property IOSTANDARD LVCMOS33 [get_ports sys_clk]
����set_property PACKAGE_PIN U18 [get_ports sys_clk]
����set_property PACKAGE_PIN R14 [get_ports SX_TR]
����set_property PACKAGE_PIN P14 [get_ports SX_PRF]
����5) ���Generate bitstream���ɱ������ļ���
����5 Ӳ������SDK
����1) ����Ӳ���ķ�����ѡ��˵�File->Export->Export Hardware����bit�ļ�Ҳһ����Ӳ��������ѡ��˵�File->Launch SDK������SDK����������
����2)��SDK�����������½�һ����Ϊip_test ���̺�BSP��̣���Ŀʹ��helloworldd ����ģ�塣
����3)��ip_test���̵�helloworld.c���¡�
����#include
����#include "platform.h"
����#include "xparameters.h"
����void print(char *str);
����int main()
����{
����int i,j;
����init_platform();
����while(1)
����{
����for(i=0;i<1000;i++)
����for(j=0;j<10000;j++);
����Xil_Out32(XPAR_SX11_IP_0_S00_AXI_BASEADDR,0);
����for(i=0;i<1000;i++)
����for(j=0;j<10000;j++);
����Xil_Out32(XPAR_SX11_IP_0_S00_AXI_BASEADDR,1);
����print("Hello World\n\r");
����}
����cleanup_platform();
����return 0;
����}
����6 �ܽ�
�������Ľ�����xilinx��˾�Զ���IP�ķ������Լ�ʹ���Զ���IP���п����ķ������������㣬ʵ���Ըߣ��������û��ĸ��Ի�Ҫ��װ�õ�IP���ں����Ŀ��������п���ֱ�ӵ��ã���ǿ����Ŀɶ��ԣ��������̡�
�����ο����ף�
����[1] xilinx��Serial RapidIO Gen2 Endpoint v4.0 LogiCORE IP Product Guide��2015
����[2] TI��SRIO Programming and Performance Data on Keystone DSP��2011
�������ߣ�����