写在前面

工欲善其事,必先利其器。

在电子技术飞速发展的今天,熟练使用相关工具软件是学习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但很“神奇”的错误坑了。

Vivado主界面

Keil

Keil MDK是用于一系列基于Arm Cortex-M的微控制器设备的一个完整的软件开发环境。界面如下图所示,与Xilinx Vivado软件类似,主界面也是由工具栏、工程目录、代码编辑、调试信息组成。Keil软件的主要作用是将C语言/汇编语言写的程序编译成机器码,在进入调试模式时,通过调试器下载机器码到RAM中,CPU启动后,开始一条条地从存储器中取指执行。

Keil主界面

调试界面可以看到的信息更多,包括执行过程中的寄存器状态信息、反汇编代码,还可以通过右下角的窗口看到运行过程中系统内部一些信号的值,如下图。调试过程中可以设断点,也可以单步运行。

Keil调试界面

最后祝大家学习愉快!

quartus如何生成sof_如何高效利用Arm DesignStart计划开放的处理器核-工具篇相关推荐

  1. ARM DesignStart计划——私人定制一颗ARM处理器

    文章目录 什么是ARM DesignStart计划? 1.DesignStart Eval版本 2.DesignStart FPGA版本 3.DesignStart Pro版本 4.DesignSta ...

  2. FPGA学习笔记---用Quartus II生成输入输出框图

    在开始学习FPGA的时候,各个模块的代码都会编写,但是将几个模块组合要在一起使用的时候就比较容易犯迷糊,不清楚每个模块都有哪些端口,各个端口该怎么连接. 下面用一个简单的示例来说明一下,如何利用Qua ...

  3. 领英如何在人脉圈公开档案更新,在人脉圈公开档案更新,如何高效利用好Linkedin

    在人脉圈公开档案更新 您可以选择在人脉圈发出特定职业档案版块的更新通知,例如在以下情况中: 添加新职位或当前职位 编辑当前职位 庆祝入职纪念日 向职业档案中添加内容或进行更新时,可以设置谁可以看到您的 ...

  4. 直播 | 清华大学关健:利用自监督学习的开放端故事生成评价方法

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  5. AI+游戏:高效利用样本的强化学习 | 腾讯AI Lab学术论坛演讲

    3月15日,腾讯AI Lab第二届学术论坛在深圳举行,聚焦人工智能在医疗.游戏.多媒体内容.人机交互等四大领域的跨界研究与应用.全球30位顶级AI专家出席,对多项前沿研究成果进行了深入探讨与交流.腾讯 ...

  6. quartus状态机生成_生成器作为(快速失败)状态机

    quartus状态机生成 这个想法是几周前在设计"生成器"类时想到的,该类必须将输入发送给封装的Writer . 实际上,它是Builder模式. 但是,规则有些复杂,用户必须以某 ...

  7. CubeMx 生成的FreeRTOS 代码在ARM compiler6 编译__forceinline 报错的解决方法

    一.问题 如题,CubeMx 生成的FreeRTOS 代码在ARM compiler6 编译__forceinline 报错的解决方法. 二.解决方法 第一种方法,将编译器换回default comp ...

  8. msfvenom生成木马的简单利用

    msfvenom生成木马的简单利用 1.简介 本篇文章将会用msfvenom生成一个windows下可执行木马exe的文件,用kali监听,靶机win10运行木马程序,实现控制靶机win10. 2.实 ...

  9. 什么是拖延症 ----- 时间管理:终结拖延症小技巧之高效利用时间

    转载 http://blog.sina.com.cn/s/blog_4c34ea7b0101ebdj.html?tj=1 http://blog.sina.com.cn/s/blog_4c34ea7b ...

  10. Android Studio 之 Live Templates 高效利用

    Android Studio 之 Live Templates 高效利用 在编辑器中使用用Ctrl + J 快捷键可以调出Live Templates,可以自动补全所设置模板的代码,善用它能够在很大程 ...

最新文章

  1. php url模式在哪修改,php如何修改url
  2. Nat. Med. | 人工智能临床研究新指南
  3. matlab中如何画隐函数方程组,怎样用matlab画隐函数
  4. pytorch android
  5. 论设计,需求和编码三者的关系
  6. new housing price at shanghai
  7. leetcode 1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?
  8. 在Kali中安装foremost
  9. steam用移动网不显示头像
  10. 国际人工智能领域著名科学家,受聘同济大学名誉教授
  11. 服务器上qq邮件不能打开方式,QQ邮箱打不开是怎么回事?从QQ面板上打不开QQ邮箱怎么解决?...
  12. 什么是股票配资app?
  13. spring boot共享电动单车管理系统毕业设计源码131016
  14. Android 学习网站
  15. 打开idea的svn项目弹出Action not found:Subversion.Add提示解决办法
  16. C++ pair 和make_pair的用法
  17. python使用end报错
  18. PLC如何实现二阶滤波器算法(二阶巴特沃斯低通滤波器FIR_Filter)
  19. 制作一台计算机需要多少知识,如何制造一台计算机,编程多年后我开始思考这个问题...
  20. python+selenium小结5:获取浏览器版本号,当前URL,当前页面title

热门文章

  1. 全国计算机等级考试在线报名湖南,『NCRE报名入口』湖南2020年下半年计算机等级报名入口-ncre-bm.neea.cn...
  2. 通过搜狗蜘蛛池,让网站收录排名提升
  3. dp - 3维背包(东四省)
  4. web前端网页制作 小组作业(制作一个简单的小网页)
  5. WIFI类物联网产品配网方式简述
  6. 使用浏览器访问或调试微信公众号(跳过微信认证)
  7. 《可复制的领导力》脑图
  8. android 锁屏 浮动窗口,Android如何实现锁屏状态下弹窗
  9. linux进入rescue,进入Linux rescue模式后有几种方法引导系统
  10. kafka错误代码解释