关于SoC芯片设计中的一点理解——1
哈哈哈,这是从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相关推荐
- python中size的用法.dim_对于numpy中的函数的参数dim的一点理解
对于numpy中的函数的参数dim的一点理解 经常被dim参数搞混.试着总结了一下.记忆瞬间清晰了 以.max(dim)方法为例: >>> import numpy as np &g ...
- oracle中sga可以共享么,关于共享段与SGA的一点理解
关于共享段与SGA的一点理解 上一周买了两本书,google了不少文档资料,看了看部分linux源代码终于有了以下一些理解.不知对不对 一 各类地址概念 1 逻辑地址:我们一般在用汇编语言写程序时可能 ...
- c语言中字符串关于左值,关于左值lvalue和右值rvalue的一点理解
发现很多朋友对"lvalue"和"rvalue"理解有误,我先谈谈自己对此的一些理解,并期望能够引起更多朋友的广泛讨论.也算起到抛砖引玉的作用吧.引用:注:这里 ...
- mixin机制 vue_谈谈vue中mixin的一点理解
谈谈vue中mixin的一点理解 vue中提供了一种混合机制--mixins,用来更高效的实现组件内容的复用.最开始我一度认为这个和组件好像没啥区别..后来发现错了.下面我们来看看mixins和普通情 ...
- 会议重点介绍芯片设计中的人工智能
会议重点介绍芯片设计中的人工智能 Conference highlights AI in chip design, IoT 旧金山-谷歌正在试验机器学习(ML)来执行IC设计中的地点和路线,并取得了很 ...
- 十五天精通WCF——第八天 对“绑定”的最后一点理解
转眼已经中断10几天没有写博客了,也不是工作太忙,正好碰到了端午节,然后最近看天津台的爱情保卫战入迷了...太好看了,一直都是回味无穷...而且 涂磊老师话说的真是tmd的经典,然后就这样耽搁了,好了 ...
- 【转载】谈谈我对Java中CallBack的理解
谈谈我对Java中CallBack的理解 转载自: http://www.cnblogs.com/codingmyworld/archive/2011/07/22/2113514.html CallB ...
- 谈谈对APC的一点理解
谈谈对APC的一点理解 异步过程调用(APCs) 是NT异步处理体系结构中的一个基础部分,理解了它,对于了解NT怎样操作和执行几个核心的系统操作很有帮助. 1) APCs允许用户程序和系统元件在一个进 ...
- python 类中定义列表_Python-从类定义中的列表理解访问类变量
小编典典 类范围和列表,集合或字典的理解以及生成器表达式不混合. 为什么:或者,官方用词 在Python 3中,为列表理解赋予了它们自己的适当范围(本地名称空间),以防止其局部变量渗入周围的范围内(即 ...
最新文章
- 面向隐私AI的TensorFlow深度定制化实践
- 扎克伯格AR野心:下个十年,远程「闪现」,不出家门跑到朋友家聊天
- [20161229]linux下使用oclumon命令(rac)
- 石大ACM2587解题报告
- 利用计算机模拟人类的感知,利用计算机模拟人类的智能活动,属于计算机的什么应用领域...
- golang中的panic和recover
- MVC-07 案例1
- hdu-You can Solve a Geometry Problem too
- 救援模式下更改用户密码
- 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
- Maven+SpringMVC+Dubbo+zookeeper 简单的入门demo配置
- Ehcache 整合Spring 使用页面、对象缓存
- NOIP 2015 提高组 Day2
- 小项目也可以学习到很多东西
- Android批量图片加载经典系列——使用二级缓存、异步网络负载形象
- 你知道CSDN有多少VIP用户吗?
- oracle中创建表的自增ID
- 以太坊 ERC EIP是什么
- Journal of BitcoinJ 从clone开始
- 图像的上采样与下采样
热门文章
- 23.4 SQL语言
- 参数化设计(多次调用同一子模块,critical warning,引脚constraint sources)
- 修改电脑用户名(使用注册表),解决电脑无法正常登录账号,电脑桌面文件消失,修改注册表恢复文件后正常,但电脑使用后续出现很多问题,重装系统
- 利用python写一个自动获取局域网ip地址并开启服务器绕过校园网设备限制的小工具
- 远程维护需要“千里眼”
- 学做NAR图表:ggraph做网络图
- 阴阳师 服务器 找回,阴阳师服务器自动修复鬼嚎 反差萌笑傻玩家
- 0022 arduino 实例讲解 TWI arduino 的 iic 库 i2c库 arduino Wire 库 主机 读 的例子
- 如何写英文科技论文 (Unit2 主动语态与动词使用)
- 戴尔微型计算机主机怎么拆,简单拆解内部探秘_戴尔台式电脑_台式电脑评测-中关村在线...