哈哈哈,这是从CZ学长,WZG同学还有JH老师,结合自己的思考得出来的Tips(可能对也可能不对,欢迎大家指正,理解有限),感谢他们为我扫清了很多知识盲区,Thanks


目录

1、芯片中的ROM,以及ROM中的程序的形成

芯片中的ROM

ROM中的程序的形成

2、FPGA开发板子上面的JTAG接口

第一种情况:纯FPGA

第二种情况:固化的ARM核 + FPGA

3、关于流片的RAM,ROM和FPGA验证时的RAM和ROM

4、FPAG的memory资源和逻辑资源

逻辑资源

memory资源(block RAM)


1、芯片中的ROM,以及ROM中的程序的形成

芯片中的ROM

除了普通传统意义上的只读ROM,大家都知道还有flash闪存,也是非易失性存储器,flash是ROM的一种(其实还有一次可编程ROM,OTP)。不同的ROM应用在不同的场景,并且价格也不同

——flash 是rom的一种,比一般类型的rom强大,一般类型的rom只可读,但是flash已经具备了可以重写的功能

——OTP(One Time Programmable)是单片机的一种存储器类型,意思是一次性可编程:程序烧入单片机后,将不可再次更改和清除

一般来说芯片中会同时存在普通意义上的ROM(read-only)和flash闪存(可以重新擦写)两种类型

其中ROM就是只能够读取,一般SoC启动的时候会从ROM中运行程序;

还有就是flash,它可以充当SoC的另外一种启动模式,norflash(flash的一种,还有nandflash)的XPI模式,可以让程序直接在 flash上面运行

这里有必要说明一点:为什么芯片需要多种启动方式?

一种解释,因为芯片的流片比较昂贵,万一芯片从ROM中boot不了,可以从其他地方boot,这样增加了芯片的容错能力

另外一种是,不同的启动方式有不同的需求,(额这点自己现在还不是特别明白),希望有大神可以解释一波

ROM中的程序的形成

FPGA验证的时候:会将C程序转化成.coe文件(利用vivado的工具生成)用来初始化ROM;也就是说在将SoC烧写到FPGA的时候也把ROM中的内容烧写进去,这样SoC烧写到板子上的时候,ROM就存在程序了,否则ROM中的内容就是空的,需要通过其他的方式,如通过JTAG将程序写入flash等来运行程序。

流片的时候:将需要存放的程序交给制造厂,让制造厂将程序固化到ROM中


2、FPGA开发板子上面的JTAG接口

JTAG是通过菊花链调试的,这是在CortexM3内核中支持的~

第一种情况:纯FPGA

如果你的板子是纯FPGA的话,(如Digilent 的Arty A7 35T)那么通常,它的JTAG是烧录FPGA用的,一般是固化好的,不能够再提供用户JTAG调试使用;比较直观的就是在vivado进行引脚约束的时候,明明原理图上面有pin,但是vivao上面查找不到

如何进行JTAG的引脚绑定呢?那么如何利用JTAG进行调试呢?

RTL代码在进行约束的时候,肯定会留出来JTAG接口(或者两线的SW接口)需要绑定引脚;此时直接将pin绑定到普通的GPIO上面即可,然后在通过插线,将JLINK调试器(或者其他调试器)连接到GPIO端口上即可

第二种情况:固化的ARM核 + FPGA

相当于开发板上既有固化的ARM内核,又有可以烧写的FPGA,如ZYNQ开发板

此时是直接把ARM的JTAG调试接口作为pin放在开发板上。用户可以将此时的pin,绑定到JTAG接口。

最直观的一种做法,就是直接通过原理图绑定,能直接绑定的那就可以直接使用;不能绑定的,那就通过绑定GPIO引脚,然后通过调试器使用


3、关于流片的RAM,ROM和FPGA验证时的RAM和ROM

首先FPGA板子上的RAM和ROM存储和流片时的RAM和ROM存储IP是不同的

FPGA板子上的RAM和ROM是Xilinx公司提供的;流片的芯片的RAM和ROM是制造厂商提供的(如TSMC,SMIC)

所以一般在FPGA上面进行原型验证的时候,需要把RAM和ROM替换成FPGA上的RAM和ROM(通过vivado工具生成)

那么为什么不能直接用流片的RAM和ROM呢?

因为FPGA可能综合不出来,FPGA是通过不同的方式生成RAM和ROM的


4、FPAG的memory资源和逻辑资源

逻辑资源

就是形成芯片的各种各样的逻辑,控制逻辑,计算逻辑,存储逻辑等等(基本上可以形成所有的数字逻辑)

memory资源(block RAM)

memory是通过block memory生成的,

如下图说明RAM和ROM总共只能够1.8Mbits

RAM和ROM是通过工具配置之后形成IP来使用的

只需要将RAM的写属性关闭即可

既然逻辑单元可以生成存储,那么为什么需要存储block memory呢?

主要是考虑到需求,通常希望用FPGA形成计算逻辑和控制逻辑;如果用来形成memory的话,就会消耗大量的逻辑单元,那么相对而言计算逻辑和控制逻辑就可能资源不足,得不偿失;

因此一般直接会用另外的block memory来生成RAM或者ROM来节省资源

此外也有的FPGA开发板上直接集成了SRAM,DDR等存储资源相当于一个固化的IP,可以直接使用。


以上仅是个人的理解,有理解不到位或者出错的地方欢迎大家指正~~,哈哈哈

关于SoC芯片设计中的一点理解——1相关推荐

  1. python中size的用法.dim_对于numpy中的函数的参数dim的一点理解

    对于numpy中的函数的参数dim的一点理解 经常被dim参数搞混.试着总结了一下.记忆瞬间清晰了 以.max(dim)方法为例: >>> import numpy as np &g ...

  2. oracle中sga可以共享么,关于共享段与SGA的一点理解

    关于共享段与SGA的一点理解 上一周买了两本书,google了不少文档资料,看了看部分linux源代码终于有了以下一些理解.不知对不对 一 各类地址概念 1 逻辑地址:我们一般在用汇编语言写程序时可能 ...

  3. c语言中字符串关于左值,关于左值lvalue和右值rvalue的一点理解

    发现很多朋友对"lvalue"和"rvalue"理解有误,我先谈谈自己对此的一些理解,并期望能够引起更多朋友的广泛讨论.也算起到抛砖引玉的作用吧.引用:注:这里 ...

  4. mixin机制 vue_谈谈vue中mixin的一点理解

    谈谈vue中mixin的一点理解 vue中提供了一种混合机制--mixins,用来更高效的实现组件内容的复用.最开始我一度认为这个和组件好像没啥区别..后来发现错了.下面我们来看看mixins和普通情 ...

  5. 会议重点介绍芯片设计中的人工智能

    会议重点介绍芯片设计中的人工智能 Conference highlights AI in chip design, IoT 旧金山-谷歌正在试验机器学习(ML)来执行IC设计中的地点和路线,并取得了很 ...

  6. 十五天精通WCF——第八天 对“绑定”的最后一点理解

    转眼已经中断10几天没有写博客了,也不是工作太忙,正好碰到了端午节,然后最近看天津台的爱情保卫战入迷了...太好看了,一直都是回味无穷...而且 涂磊老师话说的真是tmd的经典,然后就这样耽搁了,好了 ...

  7. 【转载】谈谈我对Java中CallBack的理解

    谈谈我对Java中CallBack的理解 转载自: http://www.cnblogs.com/codingmyworld/archive/2011/07/22/2113514.html CallB ...

  8. 谈谈对APC的一点理解

    谈谈对APC的一点理解 异步过程调用(APCs) 是NT异步处理体系结构中的一个基础部分,理解了它,对于了解NT怎样操作和执行几个核心的系统操作很有帮助. 1) APCs允许用户程序和系统元件在一个进 ...

  9. python 类中定义列表_Python-从类定义中的列表理解访问类变量

    小编典典 类范围和列表,集合或字典的理解以及生成器表达式不混合. 为什么:或者,官方用词 在Python 3中,为列表理解赋予了它们自己的适当范围(本地名称空间),以防止其局部变量渗入周围的范围内(即 ...

最新文章

  1. 面向隐私AI的TensorFlow深度定制化实践
  2. 扎克伯格AR野心:下个十年,远程「闪现」,不出家门跑到朋友家聊天
  3. [20161229]linux下使用oclumon命令(rac)
  4. 石大ACM2587解题报告
  5. 利用计算机模拟人类的感知,利用计算机模拟人类的智能活动,属于计算机的什么应用领域...
  6. golang中的panic和recover
  7. MVC-07 案例1
  8. hdu-You can Solve a Geometry Problem too
  9. 救援模式下更改用户密码
  10. 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
  11. Maven+SpringMVC+Dubbo+zookeeper 简单的入门demo配置
  12. Ehcache 整合Spring 使用页面、对象缓存
  13. NOIP 2015 提高组 Day2
  14. 小项目也可以学习到很多东西
  15. Android批量图片加载经典系列——使用二级缓存、异步网络负载形象
  16. 你知道CSDN有多少VIP用户吗?
  17. oracle中创建表的自增ID
  18. 以太坊 ERC EIP是什么
  19. Journal of BitcoinJ 从clone开始
  20. 图像的上采样与下采样

热门文章

  1. 23.4 SQL语言
  2. 参数化设计(多次调用同一子模块,critical warning,引脚constraint sources)
  3. 修改电脑用户名(使用注册表),解决电脑无法正常登录账号,电脑桌面文件消失,修改注册表恢复文件后正常,但电脑使用后续出现很多问题,重装系统
  4. 利用python写一个自动获取局域网ip地址并开启服务器绕过校园网设备限制的小工具
  5. 远程维护需要“千里眼”
  6. 学做NAR图表:ggraph做网络图
  7. 阴阳师 服务器 找回,阴阳师服务器自动修复鬼嚎 反差萌笑傻玩家
  8. 0022 arduino 实例讲解 TWI arduino 的 iic 库 i2c库 arduino Wire 库 主机 读 的例子
  9. 如何写英文科技论文 (Unit2 主动语态与动词使用)
  10. 戴尔微型计算机主机怎么拆,简单拆解内部探秘_戴尔台式电脑_台式电脑评测-中关村在线...