Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 601|回复: 0

关于Quartus构建nios软核以及eclipse建立c语言工程以及成功下载到FPGA芯片过程遇到的各种问题以及解决方法详解

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-8-27 12:02:31 | 显示全部楼层 |阅读模式

    不是一篇构建nios的教程,而是遇到的各种问题以及解决方法。至于构建教程,网上一大把,我推荐正点原子的FPGA教程,比较新,比较详细,通俗易懂!!!

    这里以一个点亮LED灯的Nios软核为例,很明显,需要如下IP核,以及正确的连线(否则各种莫名其妙的错误),效果如下所示:

    这里多了一个按键控制的IP核,不过没关系。

    记住:一模一样按照我这里的连线,一条线都不能少,否则后果自负。以及export一列,也得按照红色框的来,因为这些IP核是要对芯片外部通过引脚有通信的。比如pio核,就是通过引脚控制外部的LED亮灭的,epcs也是如此,因为epcs是FPGA芯片外部的flash芯片,用于储存代码,掉电不会消失。举个例,我之前忘记连了nios_qsys核的jtag_debug_module_reset信号的连线到其它核的rest线,如果我只是把程序下载到FPGA的片内memory(掉电程序消失),那么没问题,但是当我在eclipse中点击flash?programmer界面,把xx.sof和我的C语言xx.elf文件下载进去时候,提示了一个错误

    Error: Error code: 4 for command: $SOPC_KIT_NIOS2/bin/nios2-flash-programmer "……_epcs_flash_controller.flash" --base=0x0 --epcs --sidp=0x1890 --id=0x0 --timestamp=1329570479 --device=1 --instance=0 '--cable=USB-Blaster on localhost [USB-0]' --program –verbose

    百度后发现,这是因为我忘了连接的刚刚那条jtag_debug_module_reset线,所以得在qsys界面重新打开xx.qsys文件,重新连上那条线(不需要再从头构建一次这些IP核,可以直接打开)。然后还需要再generate一次,商务英语首先软件提示你保存这个软核(如果你之前没有保存过),也就是所有的这些核,被集成了一个模块,取一个名字,system_qsys.qsys,然后generate后,会生成如下重要文件:

    一,构建软核需要的IP核以及生成相关需要的文件

    .https://blog.csdn.net/kangkanglhb88008/article/hardware/system_qsys.sopcinfo? ? 软核的一些信息文件,比如这个软核的systemID等等,后面eclipse构建c语言工程就是需要这个文件进行构建,从而针对性的生成一些驱动库函数

    .https://blog.csdn.net/kangkanglhb88008/article/hardware/synthesis/system_qsys.v? ? 这个就是Quartus工程的顶层模块会例化调用的软核模块(也就是我们需要的最终模块)的verilog源码

    .https://blog.csdn.net/kangkanglhb88008/article/hardware/synthesis/system_qsys.qip? ? 替考雅思相当于是给顶层模块指明system_qsys.v的一些依赖关系,库名等,可以看成是一个库的配置函数,这个在集成Qsys系统时候会用到

    二,建立一个Quartus工程

    建立一个自己FPGA芯片型号的工程

    三,集成Qsys软核系统

    在Quarts界面,Assiment-settings按钮,file,add,添加刚刚system_qsys.qip?这个软核配置文件,相当于是添加了所有库文件

    同时给建立的工程添加一个顶层模块文件,比如qsys_hello_world.v,添加例化软核模块的代码,我的代码如下:

    / Descriptions: ? ? ? ?hello_world顶层模块
    module qsys_hello_world(
    ? ? input ?sys_clk,
    ? input ?sys_rst_n,

    ? //flash
    ? input ?flash_data0,
    ? output flash_sdo,
    ? output flash_sce,
    ? output flash_dclk,

    ? output [7:0] led
    );

    //例化Qsys系统
    ? ? system_qsys u0 (
    ? ? ? ? .clk_clk ? ? ? ? ?(sys_clk), ? ? ? ? ?// ? ? ? ?clk.clk
    ? ? ? ? .reset_reset_n ? ?(sys_rst_n), ? ?// ? ? ?reset.reset_n
    ? ? ? ? .pio_led_export ? (led), ? // ? ?pio_led.export
    ? ? ? ? .epcs_flash_dclk ?(flash_dclk), ?// epcs_flash.dclk
    ? ? ? ? .epcs_flash_sce ? (flash_sce), ? // ? ? ? ? ? .sce
    ? ? ? ? .epcs_flash_sdo ? (flash_sdo), ? // ? ? ? ? ? .sdo
    ? ? ? ? .epcs_flash_data0 (flash_data0) ?// ? ? ? ? ? .data0
    ? ? );


    endmodule

    ?

    除此之外,软件中,assignments-Device-pinOption界面,未使用的引脚全部配置为高阻态,评分标准使用的全部设为正常I/O

    现在软核搞定了,还差最后一步,给软核模块的输入输出与fpga芯片外界建立IO引脚联系,Assignment-pinplanner,看电路图,一个个分配好引脚即可(如果有脚本文件也可以打开照着分配即可,按道理说脚本文件可以直接导入,可是不知道为啥不行)

    四,全编译以及下载进入FPGA

    全编译这个Quaruts工程,得到qsys_hello_world.sof文件,可以直接烧录进入FPGA了(从此这个FPGA就是一个单片机了),但是这样掉电会消失。接下来一个博客会讲解如何建立eclipse?C语言工程以及烧录掉电不消失。

    ?

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-23 09:48 , Processed in 0.059095 second(s), 28 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表