【中科亿海微EQ6HL45开发平台测评体验】+ 全新建立FPGA项目——ehiway_fpga_test0
本帖最后由 mars4zhu 于 2022-10-27 11:15 编辑<h2>全新建立FPGA项目——ehiway_fpga_test0<a href="https://mars4zhu.loca.lt/EQ6HL45_Demo_Notes.html#fpgaehiway-fpga-test0" title="Permalink to this heading"></a></h2>
<section id="id1">
<h3>按照操作步骤,一步步新建工程的流程如下:<a href="https://mars4zhu.loca.lt/EQ6HL45_Demo_Notes.html#id1" title="Permalink to this heading"></a></h3>
<p>流程在最左侧的“Flow Navigator”面板上:</p>
<dl>
<dt>具体操作如下:</dt>
<dd>
<ol>
<li>
<dl>
<dt>新建工程,选择目标文件夹、选择RTL工程、添加源文件(或者直接Next跳过)、添加约束文件(或者直接Next跳过)、选择器件、结束。</dt>
<dd></dd>
</dl>
</li>
<li>
<dl>
<dt>创建新的源文件:</dt>
<dd></dd>
</dl>
</li>
<li>
<p>运行综合:点击左侧“Flow Navigator”面板里的“Run Synthesis”</p>
</li>
<li>
<dl>
<dt>IO引脚规划:待综合结束,无误后点击菜单栏Tools->IO Planning,</dt>
<dd>
<p>自动保存在约束文件.edc文件中,也可以直接编辑改文件,在IO引脚数较多的时候跟方便。</p>
</dd>
</dl>
</li>
<li>
<p>布局布线:点击左侧“Flow Navigator”面板里的“Run Implementation”</p>
</li>
<li>
<p>生成比特流文件:点击左侧“Flow Navigator”面板里的“Generate Bitstream”。</p>
</li>
<li>
<dl>
<dt>各阶段的报告结果:</dt>
<dd></dd>
</dl>
</li>
<li>
<dl>
<dt>下载:点击左侧“Flow Navigator”面板里的“Open Target”。</dt>
<dd></dd>
</dl>
</li>
</ol>
</dd>
</dl>
</section>
<section id="id2">
<h3>下载无反应及其修复<a href="https://mars4zhu.loca.lt/EQ6HL45_Demo_Notes.html#id2" title="Permalink to this heading"></a></h3>
<p>下载后LED没有按照预期的流水灯效果,核心板上的INIT_B指示灯亮起,意味着配置失败。尝试多次后依然无果,首先怀疑硬件接线问题,导致断路或者nRST短路到GND,使得裸机一直在复位状态,为了排除,直接将LED引脚赋值,如下:</p>
<pre style="background:#555; padding:10px; color:#ddd !important;">
module flow_led(
input sys_clk,//系统时钟
input sys_rst_n,//系统复位,低电平有效
outputregled //4个LED灯
);
assign led = 4'd1100;
endmodule
</pre>
<p>综合后下载,依然没有任何反应。打开给出的例程中的1_flow_led,编译下载后同样无反应。</p>
<p>最后在 打开必看/修改说明.docx 中才发现,必须设置settings里面的一个参数,才能下载正确。</p>
<p>经过测试,该参数设置为2、3、4,均可以成功下载,并且该参数数字越大,下载时间越长。</p>
</section>
<section id="id3">
<h3>最终的流水灯效果与源代码:<a href="https://mars4zhu.loca.lt/EQ6HL45_Demo_Notes.html#id3" title="Permalink to this heading"></a></h3>
<p>verilog源代码如下:</p>
<pre style="background:#555; padding:10px; color:#ddd !important;">
`timescale 1 ps/ 1 ps
module top(
input nRST, CLK_50M,
output reg LED
);
parameter COUNTER_MAX = 32'd10_000_000;
reg clk_counter;
always @ (posedge CLK_50M or negedge nRST) begin
if (!nRST)
clk_counter <= 32'd0;
else
if (clk_counter < COUNTER_MAX)
clk_counter <= clk_counter + 1'b1;
else
clk_counter <= 32'd0;
end
reg last_nRST;
always @ (posedge CLK_50M) begin
last_nRST <= nRST;
end
always @ (posedge CLK_50M or negedge nRST) begin
if (!nRST)
LED <= 4'b1111;
else if (last_nRST == 1'b0)
LED <= 4'b1110;
else
if (clk_counter == COUNTER_MAX)
LED <= {LED, LED};
else
LED <= LED;
end
endmodule
</pre>
<p>PS:注意LED的阴极接到FPGA的IO,低电平点亮,高电平熄灭。</p>
</section>
<p>入门FPGA需要准备些什么,一直不敢想入门。</p>
页:
[1]