quartus如何生成sof_如何高效利用Arm DesignStart计划开放的处理器核-工具篇
写在前面
工欲善其事,必先利其器。
在电子技术飞速发展的今天,熟练使用相关工具软件是学习SoC的必经之路。但是,由于SoC是一个完整的系统,既包含处理器核、总线、外设等硬件,也包含处理器需要执行的指令,所以对于“软件编程”和“硬件编程”的概念必须要区分清楚。关于“软件编程”和“硬件编程”的概念在很多基础课程(如C语言、数字设计等课程)中已有介绍,但在学习SoC时,由于“软件编程”和“硬件编程”的概念“混”在一起,并且一开始不熟悉工具软件,可能会感觉难以上手。
本文介绍在使用Arm DesignStart计划开放的处理器核搭建SoC并通过FPGA实现的过程中所用工具软件(不介绍如何操作),理清“软件编程”和“硬件编程”的概念,熟悉SoC设计的流程。
软硬件关系
在搭建SoC的过程中需要使用的工具软件有Modelsim,Vivado,Keil,实现流程如下图。
我们通过Arm DesignStart获取的是一个Verilog语言描述的软核,我们通过添加一些IP实现一个完整的描述SoC的工程。这些IP可以是用IP工具生成的,也可以是我们通过硬件描述语言(Verilog/VHDL)描述的。
Vivado负责将硬件描述语言(Verilog/VHDL)所描述的SoC编译、综合、实现,将FPGA内部本身无序的各种逻辑资源(如查找表、触发器、RAM等)配置成为有序的电路,实现SoC功能。而Keil负责将编写的软件编程语言(C/Assembler)编译成为机器码十六进制文件。将机器码作为RAM的初始化内容,即可进行仿真,在Modelsim软件中观察SoC工作时各个信号的波形。若将机器码通过工具下载到由FPGA实现的SoC中,那么就可以让SoC执行编写的程序,通过FPGA开发板观察执行结果。
从流程中也可以理解“软件编程”和“硬件编程”的区别,“软件编程”编的其实是一条条的指令,描述的是硬件的“动作”,而“硬件编程”编的是一个个的门电路和它们的连接关系,描述的是是硬件的结构。
以下对这三个工具做详细的介绍。
Modelsim
Modelsim主要用于硬件描述语言(Verilog,VHDL等)的仿真,并且支持VHDL和Verilog混合仿真。仿真分为前仿(RTL级仿真)和后仿(综合后门级仿真),这里使用Modelsim仿真属于前仿,也就是功能仿真,主要目的是通过看输出波形图,验证硬件逻辑是否正确。
Modelsim既可以独立使用,也可以和Intel Quartus Prime,Xilinx Vivado软件协同使用。
在官网上可以下载免费版本。
Vivado
Vivado是一个用于FPGA实现的综合工具,由FPGA厂商Xilinx提供,如果使用Intel(Altera)公司的FPGA,需要使用Quartus Prime软件。
从前述内容中知道,Vivado负责将硬件描述语言(Verilog/VHDL)所描述的SoC编译、综合、实现,将FPGA内部本身无序的各种逻辑资源(如查找表、触发器、RAM等)配置成为有序的电路,实现SoC功能。
Vivado的软件界面如下图。最上方为工具栏,左侧为设计流程各个的步骤,中间是文件管理和代码编辑的区域,下方为调试信息和输出的一些报告,使用时需注意阅读,以免被一些只报warning但很“神奇”的错误坑了。
Keil
Keil MDK是用于一系列基于Arm Cortex-M的微控制器设备的一个完整的软件开发环境。界面如下图所示,与Xilinx Vivado软件类似,主界面也是由工具栏、工程目录、代码编辑、调试信息组成。Keil软件的主要作用是将C语言/汇编语言写的程序编译成机器码,在进入调试模式时,通过调试器下载机器码到RAM中,CPU启动后,开始一条条地从存储器中取指执行。
调试界面可以看到的信息更多,包括执行过程中的寄存器状态信息、反汇编代码,还可以通过右下角的窗口看到运行过程中系统内部一些信号的值,如下图。调试过程中可以设断点,也可以单步运行。
最后祝大家学习愉快!
quartus如何生成sof_如何高效利用Arm DesignStart计划开放的处理器核-工具篇相关推荐
- ARM DesignStart计划——私人定制一颗ARM处理器
文章目录 什么是ARM DesignStart计划? 1.DesignStart Eval版本 2.DesignStart FPGA版本 3.DesignStart Pro版本 4.DesignSta ...
- FPGA学习笔记---用Quartus II生成输入输出框图
在开始学习FPGA的时候,各个模块的代码都会编写,但是将几个模块组合要在一起使用的时候就比较容易犯迷糊,不清楚每个模块都有哪些端口,各个端口该怎么连接. 下面用一个简单的示例来说明一下,如何利用Qua ...
- 领英如何在人脉圈公开档案更新,在人脉圈公开档案更新,如何高效利用好Linkedin
在人脉圈公开档案更新 您可以选择在人脉圈发出特定职业档案版块的更新通知,例如在以下情况中: 添加新职位或当前职位 编辑当前职位 庆祝入职纪念日 向职业档案中添加内容或进行更新时,可以设置谁可以看到您的 ...
- 直播 | 清华大学关健:利用自监督学习的开放端故事生成评价方法
「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...
- AI+游戏:高效利用样本的强化学习 | 腾讯AI Lab学术论坛演讲
3月15日,腾讯AI Lab第二届学术论坛在深圳举行,聚焦人工智能在医疗.游戏.多媒体内容.人机交互等四大领域的跨界研究与应用.全球30位顶级AI专家出席,对多项前沿研究成果进行了深入探讨与交流.腾讯 ...
- quartus状态机生成_生成器作为(快速失败)状态机
quartus状态机生成 这个想法是几周前在设计"生成器"类时想到的,该类必须将输入发送给封装的Writer . 实际上,它是Builder模式. 但是,规则有些复杂,用户必须以某 ...
- CubeMx 生成的FreeRTOS 代码在ARM compiler6 编译__forceinline 报错的解决方法
一.问题 如题,CubeMx 生成的FreeRTOS 代码在ARM compiler6 编译__forceinline 报错的解决方法. 二.解决方法 第一种方法,将编译器换回default comp ...
- msfvenom生成木马的简单利用
msfvenom生成木马的简单利用 1.简介 本篇文章将会用msfvenom生成一个windows下可执行木马exe的文件,用kali监听,靶机win10运行木马程序,实现控制靶机win10. 2.实 ...
- 什么是拖延症 ----- 时间管理:终结拖延症小技巧之高效利用时间
转载 http://blog.sina.com.cn/s/blog_4c34ea7b0101ebdj.html?tj=1 http://blog.sina.com.cn/s/blog_4c34ea7b ...
- Android Studio 之 Live Templates 高效利用
Android Studio 之 Live Templates 高效利用 在编辑器中使用用Ctrl + J 快捷键可以调出Live Templates,可以自动补全所设置模板的代码,善用它能够在很大程 ...
最新文章
- php url模式在哪修改,php如何修改url
- Nat. Med. | 人工智能临床研究新指南
- matlab中如何画隐函数方程组,怎样用matlab画隐函数
- pytorch android
- 论设计,需求和编码三者的关系
- new housing price at shanghai
- leetcode 1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?
- 在Kali中安装foremost
- steam用移动网不显示头像
- 国际人工智能领域著名科学家,受聘同济大学名誉教授
- 服务器上qq邮件不能打开方式,QQ邮箱打不开是怎么回事?从QQ面板上打不开QQ邮箱怎么解决?...
- 什么是股票配资app?
- spring boot共享电动单车管理系统毕业设计源码131016
- Android 学习网站
- 打开idea的svn项目弹出Action not found:Subversion.Add提示解决办法
- C++ pair 和make_pair的用法
- python使用end报错
- PLC如何实现二阶滤波器算法(二阶巴特沃斯低通滤波器FIR_Filter)
- 制作一台计算机需要多少知识,如何制造一台计算机,编程多年后我开始思考这个问题...
- python+selenium小结5:获取浏览器版本号,当前URL,当前页面title
热门文章
- 全国计算机等级考试在线报名湖南,『NCRE报名入口』湖南2020年下半年计算机等级报名入口-ncre-bm.neea.cn...
- 通过搜狗蜘蛛池,让网站收录排名提升
- dp - 3维背包(东四省)
- web前端网页制作 小组作业(制作一个简单的小网页)
- WIFI类物联网产品配网方式简述
- 使用浏览器访问或调试微信公众号(跳过微信认证)
- 《可复制的领导力》脑图
- android 锁屏 浮动窗口,Android如何实现锁屏状态下弹窗
- linux进入rescue,进入Linux rescue模式后有几种方法引导系统
- kafka错误代码解释