1. ZYNQ 2. MPSOC 3. FPGA 4. IO分配 5. 硬件设计
### 1. PS DDR设置参数
在FPGA设计中,PS(处理系统)与DDR(双倍数据速率)内存的设置非常重要,以下是一些基本参数和配置:
- **IO电压配置**:对于不同的Bank(如Bank0、Bank1等),需要确保电压配置为LVCMOS 1.8V,以保证信号的稳定性与兼容性。
### 2. IO分配
- **外设MIO分配**:
- QSPI FLASH、SD卡、EMMC、CAN接口、I2C、PMU、串口、看门狗、TTC定时器、以太网、USB、DP和SATA等接口的IO分配,这些都需在设计中逐一配置,确保各个外设能够正常工作。
### 3. 配置操作步骤
- **完成配置后**:点击OK并保存配置,以便在后续操作中使用。
- **导出BD配置文件**:可以导出Block Design (BD)的脚本文件,以便于后续的工程恢复和重用。
### 4. 生成输出产品
- **右击system.bd**:选择“Generate Output Products”,并等待生成成功。
- **创建HDL Wrapper**:右击system.bd,选择“Create HDL Wrapper”,该步骤用于生成顶层HDL文件。
### 5. 查看源码层次结构
- **顶层文件**:在生成的顶层文件system_wrapper.v中,可以查看其结构,并发现与Block Design中的设计一致。
### 6. 示例代码
以下是一个简单的FPGA设计示例,主要用于LED控制:
```verilog
module run_led#
(
parameter TSET = 32'd49_999_999
)
(
input diff_clock_clk_p,
input diff_clock_clk_n,
input RSTn_i,
output reg [1:0] LED_o
);
wire clk_i;
IBUFGDS CLK_U(
.I(diff_clock_clk_p),
.IB(diff_clock_clk_n),
.O(clk_i)
);
reg [31:0] tcnt;
always @(posedge clk_i) begin
if(!RSTn_i)
tcnt <= 32'd0;
else if(tcnt < TSET)
tcnt <= tcnt + 1'b1;
else
tcnt <= 32'd0;
end
wire led_en = (tcnt == TSET);
always @(posedge clk_i) begin
if(!RSTn_i) begin
LED_o <= 2'b1;
end else if(led_en) begin
if(LED_o == 2'b10)
LED_o <= 2'b1;
else
LED_o <= LED_o << 1;
end
end
endmodule
```
### 7. 生成比特流
- **Run Implementation**:执行生成比特流,确保FPGA可以加载生成的比特流文件。
### 8. 编译并导出平台文件
- **导出硬件**:在Vivado中选择“File -> Export -> Export Hardware”,将硬件导出为XSA文件,包含bitstream,以便于后续的软件工程师使用。
通过这些步骤和设置,设计师可以有效地配置和管理FPGA与SoC的硬件设计,为后续的软件开发打下良好的基础。