作者 | bunnie

译者 | 弯月,责编 | 杨碧玉

头图 | CSDN 下载自东方 IC

出品 | CSDN(ID:CSDNnews)

以下为译文:

现代的小型电子产物往往基于某个高度集成的芯片构建,这种芯片称为“系统芯片”(System on aChip,缩写:SoC)。最早的家用盘算机主板约莫包罗一百多个芯片,然而当80286 PC/AT兼容机成为主流后,在摩尔定律的推动下,主板上的芯片削减到了寥寥几个,而且这个行业永远不会走转‘zhuan’头路。现在,典型的SoC可以集成一个CPU焦点组件,以及数十个外围装备,包罗模拟、RF和电源等功效。我们甚至另有“系统级封装”解决方案,可将SoC、RAM,有时甚至将FLASH芯片封装到一个塑封中。

现代SoC极其庞大。现代SoC完整的“用户手册”往往长达几千页,而bug列表也有几百页。我在“用户手册”上加了引号,由于纵然是最开放、文档最齐全的SoC(例如NXP的i.MX系列),也必须签署严酷的保密协议,才气阅读种种第三方知识产权功效模块对应的数千页文档,例如视频解码、图形加速以及平安等。除了需要保密协议的文档之外,通常另有数千页未宣布的、针对那些不再使用的芯片区域的文档,例如原本设计中包罗但最终未能乐成的外围装备,内部调试工具以及预指导工具等。许多不再使用的功效,甚至连设计芯片的团队都不知道!

不再使用的芯片区域是一件大事,由于构建芯片可不像搭乐高积木那般简朴,它更像是镌刻家刻在大理石快上的雕塑,因此添加电路的难度远远高于关闭电路。增添一《yi》条电路仅制作新的掩膜就约莫需要破费100万美元,同时还会导致项目延迟70天(约莫10万人时的分外事情)。而在准确设计的情形下,关闭一条电路异常简朴,只需要修改代码,或者针对某个掩模层举行稍微改动,只需要破费约莫1万美元以及几天的延迟(假设晶圆尚处于中期阶段,很容易举行这样的改动)。

因此,刚最先的时刻,系统【tong】芯片的掩模组经常拥有许多分外的功效、备“bei”用逻辑和调试功效,然后逐步剔除(弃用)部门功效,直到最后系统芯片成型。正如米爽朗基罗曾经说:“每一块大理石中都隐藏着一个雕像,而雕塑家的义务就是发现它。”而我们可以说:“每个系统芯片的掩模组中都隐藏着一个数据手册,而验证团队的义务就是发现它。”有时,最后的修补发生在启动时刻,行使一些在CPU执行任何指令之前就执行的代码‘ma’来关闭错误的功效或者打补丁。这样做的效果就是,纵然是文档最完善的系统芯片中,被符号为不再使用的晶体管数目也不能忽视,只治理论上这些晶体管不会被用户看到。

从平安角度来看,系统芯片中的这种“暗物质”的存在令人担忧。不必忧郁ROM的启动或CPU微代码的问题,内建自测试(Built in Self Test,即BIST)基础设施具有执行代码注入所需的一切,你只需将它设置为准确的模式。此外,系统芯片集成商都市从寥寥几个IP供应商那里购置DDR、PCI和USB等功效块。这意味着,成‘cheng’千上万的装备都加载了相同的弃用逻辑单元,甚至差异品牌和竞争产物之 zhi[间也一样。以是,系统芯片中存在无法修补,甚至可能损坏生态系统的危险!

为了规避这种风险,Precursor使用FPGA来实现系统芯片。FPGA允许使用者重新编程,从而极大地降低了设计错误带来的成本。我们不必再像大理石镌刻那样做减法,而是可以像乐高积木那样来搭建。固然,这种天真性需要支出一定的价值:FPGA的价钱比一致功效的系统芯片高50倍,而绝对频率则慢5-10倍。然则,这样能保证Precursor中没有暗物质,由于形貌系统芯片的每一行代码都可以查看。这也意味着,若是Precursor的系统芯片中发现逻辑错误,则可以通过更新对其举行修补。这大大降低了迭代系统芯片的成本,从经济的角度来看它也可以向开源靠拢〖long〗。理想情形下,Precursor的系统芯片设计将在未来几年内成熟并接受彻底的审查,以低风险的方式朝着打造牢靠芯片的偏向生长,从而降低生产成本并提高性能,同时保持高尺度的透明度。

LiteX:Precursor系统芯片背后的框架Precursor的系统芯片使用LiteX构建。LiteX是由Florent Kermarrec确立的框架,使用Migen/MiSoC FHDL界说系统芯片,该框架自己是用Python 3.6+编写的。LiteX的焦点是一组“处置程序”,它们能够自动凭证总线尺度和宽度举行适配。这样,设计职员可『ke』以很容易地在Wishbone、AXI和CSR等总线互联尺度下夹杂使用差其余控制器和外设。只需几行代码就可以将一个分外的USB调试控制器毗邻到一个庞大的系统芯片中,而且整个总线仲裁和适配器的架构能够自行做出响应。

Precursor系统芯片简介上图是于2020年10月揭晓的Precursor芯片系统的示意图。请随时关注图中的日期,由于基于FPGA的系统芯片会不停发生转变。一样平常,我们都不用太在意这般漂亮的手绘示意图,由于通常这些图片在完成的那一天就已经由时了。而我们的CI系统会在每次代码推送时,动态天生“程序员手册”。对于Rust程序员,我们的svd2utra工具可将LiteX天生的SVD文件自动转换为Rust API的crate。使用基于FPGA的开源系统芯片,自动化CI不仅是最佳实践,而且是至关主要的部门,由于有时子模块依赖项中一个很小但很主要的补丁会不停影响你的设计。

焦点区域“焦点区域”(Core Complex)现在由一个RISC-V焦点组成,它由Charles Papon的VexRiscV实现。我们将其设置为支持“RV32IMAC”指令子集,给它添加了一个MMU,还强化了缓存。VexRiscV将缓存巨细限制为4kB,但可以通过增大缓存关联来提高有用容量。通过给焦点添加一个双向I-cache和一个四向D-cache,我们将性能提升了约莫10%。我们还准备了一个32kB的启动ROM,现在包罗三条指令,但以后可以扩展,可以对从外部内存加载的代码举行署名检查。另有一个128kB的板载SRAM,用于慎密耦合或高平安性的操作。CPU焦点被适配到一个由LiteX实现的Wishbone总线多用控制器上,以后可以进一步行使自力{li}的CSR桥适配到CSR总线上,只需要将CSR桥设置为自动在4kB页面界限上举行空间并行,从而与MMU单独确立映射。另有一个IRQ控制器认真治理来自芯片周围外设的中止。

焦点区域还包罗一组认真执行下面功效的CSR,大部门为样板代码:

“Reboot”可以为重置向量指定一个新位置

“Ctrl”可以发送软重置

“Timer 0”是LiteX提供的默认准时器。这是一个高剖析度的32位准时器,时钟频率与CPU焦点频率相同。

“CRG”是认真控制FPGA时钟天生器的接口。现在我们还没有思量太多,但最终它将在电源治理和延伸电池寿命方面施展主要作用。

“Git Info”是一个静态寄存器,提供用于构建Precursor芯片的git代码库的信息。

“BtSeed”是一个64位数 shu[,经由随机初始化后可以为结构布线历程提供一个熵。若是最终用户要求为其装备设计独占的FPGA网表,那么通过BtSeed,无需改动代码就可以实现(否则所有构建都是完全相同的)。

“Litex ID”是一个可供人阅读的文本字符串,用于标识系统芯片设计。

“TickTimer”是一个低分辨率的64位准时器,时钟增量为1毫秒。它作为Xous OS的时钟源使用。

调试块焦点区域旁边是一个调试块。调试块拥有一个全速的USB MAC/PHY,认真为Wishbone包打开隧道,从CPU的角度来看,它是另一个Wishbone控制器。我们使用给它来驱动CPU上的调试接口。这样纵然CPU停机,也可以通过USB用GDB毗邻到Precursor上。甚至可以构建一个不带RISC-V CPU的Precursor,然后通过USB来为Wishbone包打开隧道,举行【xing】调试和驱动开发。调试块还包罗一个名为“Messible”的小型CSR外设,这是一个包罗64个元素的8位宽FIFO,可以在调试时作为邮箱或草稿使用。

内存映射和CSR I/ORISC-VCPU的内存空间通过Wishbone总线映射到多种外设和内存块上。在传统的系统芯片设计师看来,Wishbone有点像AXI,只不外是开源的。Wishbone支持许多很棒的特征,如多master、流水线和块传输等。Wishbone总线空间的一部门还映射到了一个名为“设置和状态寄存器”(Configurationand Status Register,CSR)的总线上。

,

USDT线下交易

欧博注册

欢迎进入欧博注册(www.aLLbetgame.us),欧博官网是欧博集团〖tuan〗的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

U交所(www.payusdt.vip),全球頂尖的USDT場外擔保交易平臺。

,

虽然Wishbone是高性能总线,但它需要更多的接口逻辑,而且只在外设带宽匹配总线带宽时才气施展最佳性能。CSR有区域效应,从硬件和软件API两方面都可以顺应随便寄存器位宽,但性能较低。因此,CSR最适适用作低速到中速的输入输出义务(例如命名设置和状态寄存器),这些义务中Wishbone异常适合映射到内存上的I/O,这样可以提高带宽并改善延迟,足以抵偿区域效应带来的分外开销。

在设计历程中,绝大多数外设的第一步都是映射到CSR空间,然后升级成内存映射实现,从而到达性能要求。因此,Precursor上的绝大部(bu)格外设都是仅支持CSR的装备,这并非有时。下面是每个CSR外设的简朴先容。需要提醒一点,你可以查看我们的参考手册以获取更详细的信息。

“COM SPI”是毗邻到嵌入控制器(EmbeddedController,EC)系统芯片上 的SPI总线。这是一个20MHz的SPI外设,传输带宽为牢靠的16位。该块的目的为升级成内存映射I/O块。

“I2C”是一个I2C总线控制器。现在,只有实时时钟(RTC)芯片和一个音频编码解码芯片毗邻到了这个I2C总线上。

“BtEvents”是一个认真种种外部实时终端的catch-all类型的块。现在它认真处置来自EC和RTC芯片的中止。

“KeyScan”是键盘控制器。它认真扫描9x10的键盘矩阵来发现击键,使用一个慢速的32kHz外部时钟源。将键盘扫描器与系统焦点时钟解耦合,系统就可以在守候键盘输入时进入更低功耗状态,从而将Precursor在两次充电之间的使用时间延伸数天。

“BtPower”是一组GPIO,专用于电源治理。它可以将音频和离散的TRNG打开或关闭,笼罩EC的电源控制指令,为USB type C端口激活boost模式(以支持DFP“宿主”操作),还可以接纳自毁机制。

“JTAG”是一组GPIO,毗邻到FPGA的JTAG引脚。这些与我们的eFuseAPI驱动连系使用,可以在7 Series FPGA上自行提供AES比特流加密。

“XADC”是7 SeriesXADC块的接口。它是一个12位的多通道ADC。主要用于自我监测系统电压。在最终的产物版本中,至少有一个通道的ADC可以用于GPIO内部头的设置项,这样用户可以很容易地将模拟传感器集成到Precursor中。

“UART”是一个简朴的115200、8合一串口,毗邻到控制台I/O的调试头‘tou’。

“BtGpio”是一个数字I/O块,用于在GPIO内部头上驱动引脚。注重由于FPGA的实现限制,在不更新比特流的情形下无法在数字GPIO和模拟GPIO功效之间切换。

除了CSR的I/O之外,另有一些I/O装备也映射到了内存,以实现高性能:

“External SRAM”是一个32位宽的一部接口,映射了16MB的外部SRAM。这些SRAM由电池供电,以是在系统芯片断电时也可以保持状态。这样做的目的是通过削减睡眠和叫醒的分外开销来优化电力消耗。然则,这也意味着自毁历程必须先祛除SRAM中的敏感数据,才气启动祛除系统芯片的历程,由于自毁电路也是由SRAM的备用电源认真供电的。外部SRAM块另有一个CSR接口,认真从SRAM中读取设置模式。

“Audio”是一个毗邻到外部音频编码解码的I2S接口。它包罗一个用于设置I2S接口的CSR块,还包罗一对256x16的、映射到内存的采样FIFO。

“SPI OPI”是一个类似于SPI的高速接口,毗邻到外部闪存存储,并映射了12个8MB的非易失性存储器上。OPI中的“O”代表八位,这是一个8位总线,频率为DDR的100MHz。它还包罗一个与读取器,可以存储相当于数个缓存线的代码,可以优化顺序代码执行的情形。该总线的‘de’高性能异常主要,由于它主要被CPU用来运行代码。它还包罗一个CSR接口,用于控制诸如块擦除、页面编程等操作。

“MemLCD”是LCD的帧缓冲。Sharp Memory LCD包罗自己的内部内存,因此纵然宿主断电,也能够维持图像。因(yin)此,MemLCD帧缓冲就是LCD自身的缓冲。它认真治理LCD中的哪些线需要重画,在CSR上有请求发生时,它只会刷新那些需要重画的线。这样可以提高LCD的感知刷新率。若是重画整个屏幕,那么刷新率只有10Hz;但屏幕上的静态内容越多,刷新率也就越高。

加密区域前面 mian[形貌的所有功效仅占用了FPGA约莫20%的逻辑,而Precursor的FPGA的主要逻辑位于加密区域。

上图展示了在Precursor系统芯片设计中各个功效的相对尺寸。一些块(如半冗余SHA-512和SHA-2加速器)的存在,仅仅是由于FPGA中能够容纳这些功效,而不是由于有需求。幸运的是,删除SHA-2块很简朴,只需要注释掉4行代码,能节约约莫2800个SLICE LUT,相当于约莫9%的装备资源。LiteX和svd2rust剧本会认真其余的一切!

下面是加密区域中各个块的简要{yao}说明:

“Engine25519”是算术加速器,用于加速2^255-19质数域中的操作。它是一个微指令的256位算术引擎,盘算带有正规化的256位乘法仅需要约莫1微秒,比在RISC-V CPU上运行一致操作《zuo》约莫快30倍。它需要消耗大量的资源,但依然异常主要,由于Betrusted平安通讯应用程序确立在Double-Ratchet算法上,该算法异常依赖这种运算。要明白Engine25519,最好从CI文档最先阅读。该块异常大,稍后我们会单独写一篇文章来注释它的功效。

“SHA-512”和“SHA-2”是硬件加速的SHA散列块。它们来自Google的OpenTitanSystemVerilog源代码。SHA-2块直接来自OpenTitan,险些包罗了OpenTitan的所有代码,由于它异常容易集成。SHA-512块是我们自己对SHA-2块的改善。由于历史缘故原由,现在的Precursor中同时包罗了两个快,只管绝大部门应用程序仅需要其中一种。

“AES”是一个AES加速器,也直接来自Google的OpenTitan项目。它可以支持AES 128、192和256,还支持ECB、CBC和CTR模式下的加密息争密。

“KeyROM”是一个256x32的ROM,使用FPGA中的牢靠位置LUT实现。由于ROM的位置是牢靠的,我们可以使用PrjXray来确定FPGA比特流中KeyROM比特的位置。这样就可以在FPGA比特流中直接编辑KeyROM,从而将信托从低层的eFuse AES key转到达Precursor系统芯片中的高层功效中。我们会在其他文章中进一步讨论一些最近发现的FGPA eFuse AES key的主要懦弱性。

“TRNG”是芯片内的、基于环形振荡器的真随机数天生器。它使用多个小环来网络足够多的熵,然后合并成一个大环,用于最终的丈量。Precursor TRNG的构建和验证也会另文先容。

“ICAPE2”是《shi》在FPGA组织(fabric)中对未使用的内部调试端口的显式绑定(tie-down)。ICAPE2是Xilinx接纳的方式,FPGA可以通过它举行内省,并接见内部设置「zhi」状态。我们显式地将其绑定,这样其他功效就无法使用它。此外,由于ICAP2位于比特流中众所周知的位置,现实上可以写一个工具,在编译后对比特流举行检查,以验证ICAP2块确实被禁用了。

分块『kuai』的思绪原文:

Usdt官方交易所声明:该文看法仅代表作者自己,与本平台无关。转载请注明:欧博注册(www.aLLbetgame.us):filecoin行情(www.ipfs8.vip):为什么我们{men}需要开《kai》源的系统芯片?
发布评论

分享到:

Allbet注册(www.aLLbetgame.us):领命出征!
1 条回复
  1. 新二皇冠最新手机登录
    新二皇冠最新手机登录
    (2021-07-16 00:02:59) 1#

    新2会员手机管理端www.huangguan.us)实时更新发布最新最快的新2代理线路、新2会员线路、新2备用登录网址、新2手机管理端、新2手机版登录网址、新2皇冠登录网址。

    真的甜吗

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。