[MCU] 【中科亿海微EQ6HL45开发平台测评体验】+03.流水灯仿真和上板测试(zmj)

卿小小   2022-11-6 18:42 楼主

【中科亿海微EQ6HL45开发平台测评体验】+03.流水灯仿真和上板测试(zmj)

中科亿海微EQ6HL45开发平台提供了非常丰富的接口测试DEMO。

本节通过LED流水灯的仿真和上板测试,了解elinx软件开发FPGA的开发流程和仿真流程,同时也检验板上LED灯是否正常。

//------主要参考文档

//------eLinx软件使用手册
UG102_eLinx_Design_Suite_User_Guide_ehiway_v2021.11.pdf
//------中科亿海微EQ6HL45开发板DEMO手册
EQ6HL45FPGA开发平台用户手册.pdf

 

02_sim_led

 

EQ6HL45FPGA开发平台用户手册.pdf (6.46 MB)
(下载次数: 2, 2022-11-6 18:38 上传)
UG102_eLinx_Design_Suite_User_Guide_ehiway_v2021.11.pdf (9.06 MB)
(下载次数: 1, 2022-11-6 18:38 上传)

 

1. 准备工作

中科亿海微的亿灵思®设计套件(eLinx Design Suite)使用第三方软件Mentor公司的ModelSim作为仿真工具。因此开始仿真前需要安装Modelsim,并且配置好eLINX的库文件。

1.1 ModelSim软件安装

我的电脑使用的是ModelSim-10.0c,具体安装过程此处不做额外展开描述。

//------ModelSim安装教程

//------ModelSim安装教程
https://www.bilibili.com/read/cv14582310?from=search
//------其他
1.笔记本:w7系统 64位;
2.软件:modelsim-win64-10.6d-se(安装文件及破解文件)
3.百度网盘下载地址
链接:https://pan.baidu.com/s/1dGcmGHL2q1wzh2vX1OMm5w
提取码:ox09

 

image-20221106165323351.png

1.2 亿灵思软件eLINX仿真设置

安装好ModelSim之后,还需要指定仿真库和仿真软件的索引目录。

其中仿真库(Simulation_Library)为第三方软件提供FPGA的IP模型等内容,如果是纯RTL代码仿真的话可以无需设置此项。

//------亿灵思软件eLINX仿真设置

//------亿灵思软件eLINX仿真设置(根据实际路径进行填写)
//---仿真库设置Simulation_Lib:
C:/Program Files (x86)/eHiWay/eLinx2.0/Simulation/elinx_lib
//---第三方仿真软件ModelSim设置:
C:/altera/modeltech64_10.0c/win64

 

image-20221106170350427.png image-20221106170545876.png

image-20221106170924172.png

1.3 工程代码

工程代码flow_led如下所示:

`timescale 1 ps/ 1 ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 10-28-2021 09:38:40
// Design Name:
// Module Name: flow_led
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
​
module flow_led(
    input               sys_clk  ,  //系统时钟
    input               sys_rst_n,  //系统复位,低电平有效
     
    output  reg  [3:0]  led         //4个LED灯
    );
​
//reg define
reg [23:0] counter;
​
//*****************************************************
//**                    main code
//*****************************************************                                                                                                                                                                                                                
//计数器对系统时钟计数,计时0.2秒
always @(posedge sys_clk or negedge sys_rst_n) begin
    if (!sys_rst_n)
        counter <= 24'd0;
    else if (counter < 24'd1000_0000)
        counter <= counter + 1'b1;
    else
        counter <= 24'd0;
end
​
//通过移位寄存器控制IO口的高低电平,从而改变LED的显示状态
always @(posedge sys_clk or negedge sys_rst_n) begin
    if (!sys_rst_n)
        led <= 4'b0001;
    else if(counter == 24'd1000_0000) 
        led[3:0] <= {led[2:0],led[3]};
    else
        led <= led;
end
​
endmodule 

 

2. 仿真

2.1 仿真代码

仿真代码sim_led如下所示:

`timescale 1 ns/ 1 ps
​
module sim_led( );
    //------parameter
    parameter   PERIOD_100M =   10                  ;//100MHz = 10ns
    
    //------
    reg                 sys_clk                     ;//100MHz
    reg                 sys_rst_n                   ;//active low
    
    wire [03:00]        led                         ;
    //------
    initial begin
        sys_clk = 0 ;
    end
    always #(PERIOD_100M / 2) sys_clk = ~sys_clk    ;
    
    initial begin
    sys_rst_n = 0   ;
        $display("************************************************");
        $display("//---This is a simulation for flow_led.");
        $display("************************************************");
    #1_000;
    sys_rst_n = 1   ;
        $display("//---Simulation is start.");
        $display("//---...");
    #1000_000_000   ;//1000ms
        $display("//---Simulation is stop.");
    $stop();
    #1_000_000      ;//1ms
    $finish;
    end
    //------
    flow_led    u_flow_led(
    .sys_clk            (sys_clk                    ),//系统时钟
    .sys_rst_n          (sys_rst_n                  ),//系统复位,低电平有效
    
    .led                (led                        ) //4个LED灯
    );
​
endmodule 

 

2.2 添加仿真代码

添加仿真代码步骤如下:

//------添加仿真代码
a.双击flow_Led.epr,打开流水灯工程。
b.右键Simulation_Sources,选择添加文件Add_Sources。
c.创建sim_led文件。

 

image-20221106180730555.png

image-20221106105708210.png

image-20221106110050433.png

image-20221106110056781.png

image-20221106172205935.png

2.3 执行仿真

上述步骤完成之后,可以进行仿真功能测试。

双击“Run_Behavioral_Simulation”,ModelSim自动仿真(注意:自动执行仿真代码,very-nice),仿真OK。

//------运行仿真步骤:
a.进入工程目录,双击flow_Led.epr,打开流水灯工程。
b.创建或者添加仿真文件sim_led.v。
c.运行仿真Run_Behavioral_Simulation。
d.此时会自动打开ModelSim,并自动执行仿真指令“run -all”开始执行仿真代码。

 

image-20221106145452111.png

image-20221106145452111.png

image-20221106114623758.png

3. 上板测试

上板测试步骤如下所示,上板验证OK:

//------上板测试
//---准备:
a.编译工程生成Bitstream;
b.JTAG烧录器连接开发板,打开板卡电源。
//---JTAG烧录bit步骤:
a.Auto-Detect:JTAG扫描FPGA,此处扫描到EQ6HL45;
b.Add-Files:添加烧录文件flow_led.jpsk;
c.勾选“Program/Configure”;
d.点击“Start”开始烧录。

 

image-20221106175622127.png

image-20221106182548469.png image-20221106182548469.png

 

 

//------END

回复评论 (8)

这开发平台看着挺高级啊啊                                       

点赞  2022-11-6 19:41
引用: qzc飘曳 发表于 2022-11-6 19:41 这开发平台看着挺高级啊啊                      ...

国产FPGA,PIN-to-PIN的替代spartan系列。

虽然不像Vivado那样自带仿真工具,但是关联ModelSim之后直接一键自动运行确实很惊艳。

点赞  2022-11-6 20:23

国产FPGA,PIN-to-PIN的替代spartan系列。

虽然不像Vivado那样自带仿真工具,但是关联ModelSim之后直接一键自动运行确实很惊艳。

楼主的帖子非常好!

点赞  2022-11-7 06:26

集成开发环境IDE用的是自己的吗?仿真软件用ModelSim挺好的,quarutsII也是这样的。

 

点赞  2022-11-7 06:48
引用: hustjtj0806 发表于 2022-11-7 06:48 集成开发环境IDE用的是自己的吗?仿真软件用ModelSim挺好的,quarutsII也是这样的。  

是的,中科亿海微的亿灵思eLINX软件。

点赞  2022-11-7 14:45

其实就是山寨Altera的Stratix系列的EP1S40/60/80系列。

 

eLinx软件就是个套壳Quartus 11.0。。。。

点赞  2022-11-8 10:45
引用: mars4zhu 发表于 2022-11-8 10:45 其实就是山寨Altera的Stratix系列的EP1S40/60/80系列。   eLinx软件就是个套壳Quartus 11.0。。 ...

我的个人理解是eLINX外观偏向于Quartus系列软件,但是功能更倾向于Vivado软件。因为代码中是支持部分Xilinx的一些综合语法。

 

芯片功能的话,我使用的开发测试平台是中科亿海微EQ6HL45,它使用的中科亿海微6系芯片。该款FPGA对标的是AMD-Xilinx公司的Spartan-6 CSG324,封装一致,片内Bank完全兼容,管脚定义几乎完全一致。按照厂家介绍EQ6HL45能够完美的实现原位替换。

点赞  2022-11-8 14:45
引用: 卿小小 发表于 2022-11-8 14:45 我的个人理解是eLINX外观偏向于Quartus系列软件,但是功能更倾向于Vivado软件。因为代码中是支持部分Xili ...

你仔细观察eLinx软件的安装目录,以及它综合过程调用的进程,不难看出就是套壳Quartus,

 

eLinx_Calling_quartus.png

 

 

点赞  2022-11-8 22:40
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复