微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > arty artix 7- 35t 测试第3篇 添加 microBlaze,串口打印hellword

arty artix 7- 35t 测试第3篇 添加 microBlaze,串口打印hellword

时间:10-02 整理:3721RD 点击:
1. 参考官方文档,使用 vivado2016.4    vivado 新建工程,选择 arty板子


2. 选择创建 creat block design,这个我理解是 那个 原理图做设计的,可以添加IP核,说白了就是创建一个空白的原理图



3. 在 board 选项里面,可以看到很多做好的IP核,注意这个IP核只使用于这个板子,像串口,DDR3, GPIO等


4. 本次需要添加 System Clock 和  DDR3 SDRAM,先说 System Clock,双击它,添加IP核,出现下图


5. 双击 Clocking Wizard,时钟配置如下。


6. 双击DDR3 SDRAM,删除原来的信号 clk_ref_i  和 sys_clk_i ,然后把线连城如下图


7. 双击 Run Connection Automation
8. 添加软核处理器 microblaze
    点击 add ip按钮


添加Microblaze


9. 点击 Run Block Automation 打开 软核的配置页面


10.再回到 board部分,添加USB转串口,在board里面双击  USB UART ,跟上面差不多,就省略图片
11. 双击 Run Connection Automation
12.  点击 Regenerate Layout button按钮,重排设计,就是把原理图位置啥调整一下,方便看
13. 点击 Validate Design,查看你的 设计是否有问题
14. 右键点击工程里面的设计,选择 create HDL Wrapper.


15. 点击 Generate Bitstream 生成二进制文件,用来烧写到板子,成为软核处理器的,这个不多说了。
最后图如下,很方便,一行代码也没有写,哈哈哈


16.点击  File ,选择 Export→Export Hardware. 勾选 Include Bitstream
17. 点击  选择 Launch SDK,这个时候会启动SDK开发软件,如下图


18. 创建新工程


19.选择 helloworld


20. 参考我上面的17图,可以找到源代码,是C写的,确实很厉害
int main()
{
    init_platform(); //初始化平台
    print("Hello World\n\r"); //串口输出
    cleanup_platform(); //关闭
    return 0;
}
21. 点击 program FPGA, 之后, 这个 FPGA 就是一个单片机了,就是一个单片机了,就是一个单片机了!


22.  选择你的 uart_test 工程  点击   Run As… button选择 Launch on Hardware (System Debugger)
    这个时候就相当于 把程序下载到单片机并且仿真
    下面是eclipse 风格的debug仿真,用过ccs 和 eclipse 的人这些应该很熟悉


23. 开始仿真后,是的支持仿真,单步调试啥,果然觉得很牛逼的样子。
串口发的时候,有个TXD指示灯会亮。


24. 串口界面,一直打印,我自己添加了while循环,所以一直打印


25. 其实SDK也自带的串口助手的,点击加号就可以添加串口



26. 搞了半天才搞定,说下我遇到的几个问题
(1)第一次我进入SDK 的时候,莫名其妙的  Launch on Hardware (System Debugger)  不成功,然后我build 工程的时候,出现了5个error
         我根据error 的错误原因去找,说是有个函数没定义,但是我查,明明定义了啊,不知道原因,我也百度了,没这方面的资料,没办法啊,我
         只能重新进入SDK,建工程,这次居然没问题,谢天谢地,都快放弃了。
(2)串口不输出,很奇怪,我刚开始以为是驱动问题,因为板子的FT2232可以做USB转串口,也可以做JTAG,但是我设备管理器没看到JTAG,到网上找
        驱动也找不到,没办法,建了个纯FPGA工程,发现可以下载,原来设备管理器看不到也能用。既然下载问题排除。
(3)为什么呢。我就一直试,实在不行,我加了whille(1)循环,然后有次不小心把串口波特率设置成了115200,居然看到了数据,然后去掉while(1), 重新仿真,看不到数据。但是根据注释 波特率是9600,我实际测试是115200,真不知道什么鬼,把我给坑的。
谨以此记录下第一次用软核的学习经验。我把C部分看了,C大家都会,我就不多讲了,总之这次搞了半天,算是有收货
/*
* helloworld.c: simple test application
*
* This application configures UART 16550 to baud rate 9600.
* PS7 UART (Zynq) is not initialized by this application, since
* bootrom/bsp configures it to baud rate 115200
*
* ------------------------------------------------
* | UART TYPE   BAUD RATE                        |
* ------------------------------------------------
*   uartns550   9600
*   uartlite    Configurable only in HW design
*   ps7_uart    115200 (configured by bootrom/bsp)
*/

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top