
SOC设计
文章平均质量分 70
摆渡沧桑
芯片算法架构师
算法设计/硬件设计/公钥密码/对称密码/抗量子前沿密码(抗攻击/同态/格密码)
展开
-
复微杯参赛经验分享
各位芯片设计爱好者,大家好,今天给大家分享本人(CSDN:摆渡沧桑)参加电子设计大赛的经验,仅供参考。去年参加了第二届“复微杯”全国大学生电子设计大赛数字赛道,以及第三届“华为杯”中国研究生创芯大赛,均取得了不错的成绩;复微杯是数字赛道的一等奖(第一名),华为杯是企业专项一等奖(第一名),团队三等奖;拿到总共三万的奖金。我们团队名为“躺着撸代码”队;第一届复微杯数字赛道第一名是“站着写代码”队,这下知道该起什么名字了吧[坏笑];团队成员有来自复旦大学和上海大学,大家是可以自由跨校组队,建议跨校组队的同学原创 2021-04-09 19:17:14 · 4801 阅读 · 2 评论 -
基于Montgomery算法的高速、可配置RSA密码IP核硬件设计系列博文
基于Montgomery算法的高速、可配置RSA密码IP核硬件设计系列文章分享原创声明:本系列所有的博文都是本人参考相关的文献资料后,独立撰写,组织语言后,编写本系列博文,如需转载,请注明转载出处;本系列主要基于FPGA进行相关的硬件设计,也可以采用ASIC,对于硬件初学者来说,是一个很值得学习的地方,包括第八部分相关的加法器的实现,一些算法的硬件实现,一些密码学的相关知识,相关的软件的使用,如Verilog,Python等,以及一些随机数的产生,抵抗侧信道攻击的算法等。基于Montgomery算法的原创 2021-02-27 21:38:42 · 3094 阅读 · 3 评论 -
PCIe协议在SoC中的作用
下面介绍PCIe在SoC中是如何提高性能的,主要分为以下几个部分:PCIe协议的特点:PCIe设备的认识PCIe的互联系统PCIe高带宽低延迟的实现PCIe对SoC系统性能的提升一. PCIe协议的特点PCIe特性PCIe 1.0-6.0 协议标准:二. PCIe设备PCIe应用场景2.网卡USB显卡4.固态硬盘PCIe接口形式...原创 2021-01-07 19:29:41 · 2732 阅读 · 0 评论 -
AMBA总线协议(四)—— Multi-Layer AHB System (多层AHB总线架构)
AMBA总线协议(四)——Multi Layer AHB System (多层AHB总线架构)1. 介绍:multi-layer AHB 是基于AHB互联架构:可以开发更多可用总线带宽的多主机系统可以构建灵活体系架构的复杂多主机系统;消除了在硬件设计阶段,就修改有关将系统资源分配给特定主机的设计决策要求可以使用标准的AHB主从模块而不需要修改每个AHB layer可以非常简单,因为只有一个主机,所以不需要仲裁,只需要MUX;可以使用AHB-Lite协议,即不需要请求和授予,不需要RETRY/S原创 2020-12-04 22:20:13 · 6412 阅读 · 0 评论 -
AMBA总线协议(二)——一文看懂AMBA2 AHB2与AMBA3 AHB-Lite总线协议的区别
AMBA总线协议(二)一文看懂AMBA2 AHB2与AMBA3 AHB-Lite总线协议的区别一、AHB-Lite协议1. AHB-Lite协议:AHB-Lite协议为AMBA 3 家族的AHB协议,其简化了AHB的协议复杂性;面向高性能,高频率系统设计;AHB-Lite Slave一般是内存器件(MCU),外部存储器接口和高带宽外围器件,低带宽的器件也可以连接至AHB-Lite上,但是一般通过桥接器连接至APB总线上。AHB-Lite协议为单Master,多Slave的,因此没有仲裁器。原创 2020-11-27 16:36:28 · 12122 阅读 · 1 评论 -
DMA基本工作原理总结概述(一)——DMA系统架构
一. DMA的工作原理:DMA是一种内存访问技术;可以独立于CPU, 直接读、写系统存储器、外设等二. 工作、传输模式:1. 工作模式:FIFO模式与直接模式 FIFO模式下,可以将要传输的多个数据(或字节)累计存储在FIFO缓冲器中,然后在FIFO缓冲器中设置存储阈值,当到达阈值时,FIFO会自动把所有存储的数据一次性的发送到目标地址; 直接模式下,DMA直接进行数据从源地址到目的地址的传输,对于外设的传输,因为外设内部一般也有FIFO,所以传输的数据可以被直接存储在外设的FIFO中。2原创 2020-10-30 17:59:47 · 38446 阅读 · 2 评论 -
SoC芯片设计——为什么使用assign语句,来避免使用if-else或者case来设计电路。
0.介绍对于一块芯片的设计,尤其是芯片CPU内核,为什么你写的代码,别人不敢用,功能正确,验证通过,综合,编译通过,为什么还是没有人会使用?答案很简单,一个主要原因是,你写出的code,性能不高,风险较高,不满足严谨的工业级的开发标准。下面介绍一下,一个最基本的RTL编写原则——尽量使用阶梯式的assign语句来编写,代替if-else,case的编写。虽然if-else,case有很多优势,如:有优先级顺序;件覆盖率容易debug,这点对于验证来说,能够更快的debug出条件的覆盖率等1.原创 2020-09-27 14:25:38 · 8314 阅读 · 4 评论 -
RISC-V E300 SOC架构介绍——6.QSPI 协议之控制寄存器描述
本章描述SiFive串行外设接口SPI控制器的原理有关SPI的工作原理及相关的通信协议见如下文章,网络上也有大量相关的文献及文章,这里不在赘述。### 0.SPI概述1. SPI支持单通道、双通道、和四通道的仅主机操作协议2. 基本控制器提供基于FIFO接口的来支持可编程的IO接口3. 软件通过FIFO将排队的帧来启动传输,传输完成后,从机在接收FIFO的响应4. 专用SPI0控制器植入SPI flash读序列,该序列器将外部SPI闪存内容设定为只读/只执行内存映射器件5. 如果输入时原创 2020-09-22 23:55:38 · 3248 阅读 · 2 评论 -
RISC-V E300 SOC架构介绍——4.时钟产生
CLOCK GEN模块支持多种可替换的时钟产生方案来支持应用需求,本章主要介绍E300的时钟产生的基本结构,时钟的寄存器配置介绍在第五章(AON)和第七章(PRCI)时钟产生基本架构下图给出E300的时钟产生方案。 大部分芯片内部的数字时钟来自于由PLL或者可调振荡器产生的高频时钟:hfclk PLL由片上振荡器或者外部的晶振驱动 tlclk(TileLink bus clock) 频率固定,并且和处理器核时钟coreclk相同,每个外设都可以由tlclk产生局部时钟 AON模块包原创 2020-08-30 16:57:41 · 1808 阅读 · 0 评论 -
RISC-V E300 SOC架构介绍——3.电源模式
E300中三种支持的模式:Run, Wait,Sleep分别如下介绍所示:1 运行模式(Run) Ø Run mode:处理器正常运行模式 Ø 功耗:通过调整改变处理器核外设总线的时钟频率、单个启用或禁用外设 Ø 处理器通过执行“等待中断”WFI指令退出运行模式 2 等待模式(Wait) Ø Wait mode:处理器执行WFI指令进入wait mode,停止指令执行,门控处理器的时钟 Ø 所有状态都会保存在系统中 Ø 恢复Run mode:存在本地中断待处理,或者PLIC发送中断请求原创 2020-08-30 16:36:39 · 717 阅读 · 0 评论 -
RISC-V E300 SOC架构介绍——2.地址映射
地址映射表:包括处理器核,I/O接口,内存地址原创 2020-08-30 16:33:36 · 1407 阅读 · 0 评论 -
RISC-V E300 SOC架构介绍——1.总体介绍
0.基于RISC-V SOC平台的总体介绍:E300平台是SiFive公司Freedom Everywhere系列的第一个可定制的RISC-V SoC。E300 SoC包括一个SiFive系列 RISC-V Coreplex核,并且集成了指令和数据存储器,一个系统中断控制器(PLIC),片上debug单元,及一个可扩展选择的外设。系统可以扩展用户特定的指令集扩展,可定制协处理器,可定制加速器,可定制I/O接口,及可定制常开模块。1.E300系统级框图:2.组成部分1 可配置的E31 RISC-原创 2020-08-30 16:28:57 · 2204 阅读 · 0 评论 -
SOC——Boundary scan模块的RTL代码设计(三)
SOC——Boundary scan模块的RTL代码设计(三)Boundary Scan Cell TypesBC_2_B Type CellBC_7 Type Cell Shown with BC_2_A Control Cell//module boundary_scan (// jtg_shiftdr, jtg_clockdr_in, jtg_updatedr, jtg_trst_n,...原创 2020-08-19 15:54:39 · 1587 阅读 · 0 评论 -
AMBA总线协议(一)——一文看懂APB总线协议
0.AMBA总线概括AMBA(Advanced Microcontroller Bus Architecture) 总线是由ARM公司提出的一种开放性的片上总线标准,它独立于处理器和工艺技术,具有高速度低功耗等特点。系统芯片中各个模块之间需要有接口来连接;总线作为子系统之间共享的通信链路;其优点:低成本,方便易用缺点:容易有性能瓶颈AMBA总线的发展历史:AMBA 1.0 : ASB, APBAMBA 2.0 : AHB, ASB, APBAMBA 3.0 : AMBA Advanced原创 2020-07-22 14:18:27 · 34914 阅读 · 5 评论 -
SOC设计——多时钟源切换MUX设计
在数字电路设计中,模块的运行时钟切换时,需要考虑到是否会产生毛刺,小小的毛刺有可能导致电路运行的错误。所以时钟切换时需要特别的处理。1.主要的结构框图:2.触发器关键部分源码:3. 源码module gf_ckmux #( parameter SRC_CLK_NUM = 2 //support 2/4/8)( input ...原创 2020-05-03 10:39:46 · 2689 阅读 · 4 评论 -
SOC设计——时钟切换的MUX设计 glitch free技术(一种防止毛刺产生的多路选择器设计)
SOC设计——时钟切换的MUX设计 glitch free技术(一种防止毛刺产生的多路选择器设计)0. 为何需要时钟Glitch Free技术在SOC的设计中,经常需要用到大量的时钟源的选择与切换,以及时钟的分频,其中对于时钟的切换就显得尤为重要,并且如何在切换时钟源的过程中消除毛刺(glitch)。对于时钟的分频技术后续会介绍。我们首先看一下如果不适用glitch free技术,来看时钟源...原创 2020-04-27 18:29:04 · 11482 阅读 · 3 评论 -
SOC——Boundary scan介绍(二)
一、Boundary Scan Registerscan path 沿着IC边界,在内部逻辑之外,Boundary Scan technique to ctrl and to observe each IO siganl anround IC boundary using testing principlesbetween core logic and pad cell of I...原创 2020-04-01 10:51:21 · 8290 阅读 · 2 评论 -
SOC——Boundary scan 模块(一)
SOC——Boundary scan 模块(一)一、相关概念 DFT介绍本文之前先介绍几个概念:SOC(片上系统): 一般采用ASIC来做SOC,即专用集成电路。DFT(Deign For Test): 集成电路可测性设计。在很大规模的IC设计中,往往会有一些各种各样的bug出现,不论是在前期design的过程,还是在post silicon流片回来chip的flaw,都会导致c...原创 2020-04-01 10:45:30 · 7354 阅读 · 0 评论 -
SOC Scan Synthesis practice(扫描链scan chain分析)
Scan Synthesis practice时钟负沿和正沿的顺序一般选择下面的第二种,负沿在前,正沿在后主要分析方法:shift in 角度:先正沿后负沿的结果,在传01时,第三个正沿会拿到前面一个负沿的值。 造成负沿总会和正沿采到的值一样。shift out 角度:两种结构的优劣:采用先正后负的情况:在shift in的情况,会出现两个寄存器在一个周期的出现一样的值;...原创 2020-04-01 10:42:48 · 3574 阅读 · 1 评论 -
SOC——JTAG (IEEE 1149.1标准)介绍
SOC——JTAG (IEEE 1149.1标准)介绍目录:IEEE 1149.1 introductionTAP ControllerInstruction RegisterTest Data RegisterBoundary Scan CellBoundary Scan Description Language (BSDL)IEEE 1149.1 introduction出...原创 2020-04-01 10:38:41 · 12921 阅读 · 1 评论 -
数字IC设计中的三态门原理
数字电路中的三态门可参考另外一篇博客数字电路基础知识——CMOS门电路 (与非门、或非、非门、OD门、传输门、三态门)三态门除了高低电平,还有第三个状态——高阻态。三态门(Three-state gate)是一种重要的总线接口电路。也常常出现在芯片的引脚上,在**设计DFT/边界扫描(Boundary scan)的情况下**需要了解芯片的pin脚的几种形式,其中就包括三态输出三态门常用...原创 2020-01-09 09:52:03 · 6131 阅读 · 1 评论 -
SoC 第三讲 AMP架构双核应用程序开发和软中断处理(二)—— ZYNQ 的中断介绍
一、ZYNQ 的中断系统结构ZYNQ中断结构图如下二、 通用中断控制器(GIC,General Interrupt Controller)2.2 CPU接口功能三、GIC控制源:软中断(SGI, Software Generated Interrupt 16个)私有外设中断(PPI, Private Peripheral Interrupt 各5个)共享中断(SPI, Shared Peripheral Interrupt)四、中断处理流程五、ZYNQ的软中断设置原创 2019-08-23 14:35:31 · 3166 阅读 · 0 评论 -
SoC 第三讲 AMP架构双核应用程序开发和软中断处理(一)——双核应用程序
SoC 第三讲 AMP架构双核应用程序开发和软中断处理(一)本节主要涉及到 裸机 使用两个ARM CPU 处理器(AMP架构) 来跑不同的应用程序,即使用共享内存时进行交互,并将其写进SD卡。并且介绍中断的定义,关于中断的例程可以参考下一讲。一、AMP 非对称处理器架构二、搭建 BD 工程(Vivado)二、搭建C语言环境(SDK)1. 创建CPU0、CPU1上应用空程序amp_cpu0、amp_cpu1。2. DDR的空间分配3. 对DDR地址空间进行配置转载 2019-08-21 17:18:19 · 3670 阅读 · 0 评论 -
SoC第二讲——使用C语言控制 RAM的读写操作(六)
PL-PS练习:两个 一个用于控制RAM的写开始标志,GPIO0出现上升沿时,给RAM写入16个递增数据。如果GPIO1出现上升沿时从RAM中读取16数据。同时使用ILA进行抓取数据完成调试...原创 2019-08-18 17:23:18 · 1571 阅读 · 0 评论 -
SoC第二讲——使用C语言实现 LED 呼吸灯效果(五)
SoC第二讲——使用C语言实现 LED 呼吸灯效果(五)这篇文章 [使用 Verilog 实现 LED 呼吸灯效果]是基于纯数字逻辑来实现呼吸灯的效果,本节介绍采用C语言来实现LED呼吸灯的效果,重点理解如何通过ARM来实现LED呼吸灯效果的,即原理和过程。本次利用一个GPIO 外设接口将PS和PL部分用GPIO连接起来,通过ARM控制GPIO进而控原创 2019-08-18 17:21:32 · 8551 阅读 · 1 评论 -
SoC第二讲——使用C语言通过GPIO驱动点亮LED灯(四)
SoC第二讲——使用C语言控制GPIO驱动点亮LED灯(四)结合第一讲block design的设计,通过PS部分的外设GPIO来控制LED的亮灭,这次学习通过PS部分使用C语言通过GPIO外设控制PL部分LED灯的亮灭,实现简单的ZYNQ PS和PL部分的交互。此节首先调用函数只是对GPIO进行初始化,然后调用相关函数对其数据进行配置。一、PL部分控制LEDPL部分的verilog代码...原创 2019-08-16 15:00:40 · 4842 阅读 · 0 评论 -
Xilinx软件使用问题——SDK terminal 打印出现乱码问题解决
Xilinx软件使用问题——SDK terminal 打印出现乱码问题解决Xilinx的软件使用起来比较头疼经常会有出现问题,却很难解决的问题。如在Vivado的BD设计中,当我们第一次launch SDK时会有hw_platform0的工程文件,当我们再次修改Vivado BD设计的时候再次打开SDK,会有一个platform1的文件,此时需要删除之前的文件,保留最新的修改过后的plat...原创 2019-08-13 10:38:15 · 11123 阅读 · 7 评论 -
数字电路基础知识—— IO外设之GPIO介绍
数字电路基础知识—— IO外设之GPIO介绍一、GPIO 原理GPIO,英文全称为General-Purpose IO ports,也就是通用IO口。两个寄存器,即 通用IO控制寄存器与通用IO数据寄存器。二、GPIO相关的寄存器三、zynq GPIO 结构原创 2019-08-06 17:07:09 · 12189 阅读 · 0 评论 -
SoC第二讲——结合SDK熟悉C语言的使用(三)
SoC第二讲——结合SDK熟悉C语言的使用(三)上节介绍c语言在SDK中的应用和SDK软件的使用操作,本次将介绍==结构体变量==在内存中的使用情况,并结合具体实例查看、初始化、访问结构体。结构体在C开发中非一、结构体变量内存空间的使用情况二、zynq (OCM)地址空间分配具体关于系统地址的分配如下Xilinx官方手册(ug585),对于DDR、OCM(on chip memory)等其他地址:原创 2019-08-04 23:20:07 · 1098 阅读 · 0 评论 -
SoC第二讲——结合SDK熟悉C语言的使用(二)
SoC第二讲——C语言基础(二)——结合SDK熟悉C语言的使用本节介绍c语言在SDK中的应用和SDK软件的使用操作,结合具体的实际案例来介绍,主要用到的是zynq-7000的开发板。一、变量和内存地址在SDK中的使用与查看首先我们新建一个应用程序:file>new>applications project名字为goipled,新建一个空白应用程序,也可选择helloworld的程...原创 2019-08-03 17:51:09 · 1505 阅读 · 0 评论 -
SoC第二讲——C语言基础(一)
SoC第二讲——C语言基础(一)这部分主要介绍了C语言的基础语法。一、变量类型二、指针变量三、关键字四. 语句五、 函数的写法原创 2019-08-03 10:54:32 · 2186 阅读 · 0 评论 -
SoC第一讲——Vivado的Block Design 的使用
SoC第一课——Vivado的Block Design 的使用前言近期刚接触SoC的学习,通过Xilinx的Vivado软件和ZYNQ系列的器件芯片学习SOC,特此在学习的过程中做些总结,以帮助自己能有收获。一、ZYNQ的架构二、I/O 的架构 三、BOOT的具体流程四、Block Design (BD)的工程的搭建五、软核、硬核的区别转载 2019-07-31 23:21:55 · 41760 阅读 · 4 评论