从SOC架构到SRAMC架构——如何读懂design specification(System Verilog自学笔记之一——项目的初始:阅读design specification)

掌握如下的目标:

  1. Soc与IP
  2. AHB-SOC芯片架构与数据流向
  3. 掌握片上内存控制器AHB-SRAMC的主要作用
  4. 熟悉AHB-SRAMC的设计需求与架构
  5. 熟悉AHB-slave接口的基本功能
  6. 熟悉SRAM-memory的接口时序
  7. SRAMC的设计需求
  8. AMBA总线的AHB总线协议相关

目录

1.AHB-SOC芯片架构图:

2.SRAMC的主要作用,以及一些常见的存储体:

3.SRAM的设计架构图

4.接口基本功能:

5.熟悉AHB-SRAMC的接口时序:

6.AHB-SRAM的设计需求:

7.AHB总线协议相关:



1.Soc与IP的概念和认知

       SOC(System on Chip)在狭义上指在一个芯片上实现信号的采集、转换、存储、处理和I/O等功能,包含嵌入软件及整个系统的全部内容。在广义上指一种芯片设计技术,可以实现从确定系统功能开始,到软硬件划分,并完成设计的整个过程。

IP(Intellectual Property)核,是具有复杂系统功能的能够独立出售的VLSI块。

SoC一般由可设计重用的IP核组成,其IP核应采用深亚微米以上的工艺技术。

SoC具有如下优点:

采用内部信号的传输,降低功耗;

系统整合到一块芯片上减少了体积和重量;

在相同的面积上整合了更多的功能元件和组件,丰富了系统的功能;

芯片内部信号传递的距离缩短,速度提高;

IP模块的出现可以减少研发的成本,降低研发时间,可适度节省成本;

IP Core可以分为如下几类:

  1. 微处理器IP Core:ARM、Power PC等
  2. 存储器IP Core:RAM
  3. 处理器外设IP Core:LCD控制器、总线控制器
  4. 算法IP Core:加密算法、音视频编解码
  5. 通信控制器IP Core:网络控制、协议转换

其中IP核可以有如下的表现形式:HDL代码、原理图、网表、针对特定EDA的格式等等

        软核IP在移交用户手上时以HDL语言(code)的形式,用户可以自己进行修改并重新综合出门级网表,进行后续结构设计,具有很大灵活性,但IP的保护很难。固核IP(code+structure)在移交用户时是门级网表(用于布局布线),与工艺相关。硬核IP(physical)是基于半导体工艺的物理设计,到用户手时是电路物理结构掩膜版图和全套的工艺文件(工艺相关布局信息和时序信息),可以拿来就用,多数的处理器核、存储器核都是这种提供形式,IP的保护很容易。

2.AHB-SOC芯片架构与数据流向

 

        总体来说一个SOC系统由总线将各个IP联系起来,片上总线是通过仲裁和译码的方式来完成不同主、从部件的互连及总线复用,比较常见的有ARM的AMBA总线、IBM的CoreConnect总线以及Silicore公司的Wishbone总线等等。

        以AMBA 2.0总线为例,AMBA 2.0提供了三种不同类型的总线:AHB、ASB和APB。其中AHB支持多主机从机,采用流水线的工作方式,其上挂载着高性能、高数据吞吐量的IP,包括处理器IP:CPU,负责内存与外设之间数据转移的IP:DMA控制器,存储器IP:CPU内的Cache,片内的Pflash和SRAM等,也包括扩展的存储器接口ExtSRAM,算法IP:RSA加密解密算法,以及各种高速的I/O口:SD I/O口,USB2.0串行总线等等。APB则为系统的低速外部设备提供低功耗的简单互连,APB里面唯一的主机就是bridge,APB采用非流水线的工作方式,要两个时钟周期实现一笔读写操作。APB上挂载着System controller(含上电复位控制、中断控制、时钟振荡器、时钟锁相等),WDT(计时器看门狗)、Timer(计时器),以及各种低速外设接口例如UART异步通信串行总线(基本用于调试),SPI同步串行总线(大量用于与EEPROM/ADC/FRAM和显示驱动器等慢速外设器件通信),以及IIC(只有两根线:一根时钟线,一根数据线);

AHB总线上挂载的IP有:

  1. 高性能的ARM处理器IP:CPU
  2. 以及高数据吞吐量的片上存储体IP:SRAM、Pflash等
  3. DMA控制器,DMA不是用软件而是采用一个专门的控制器来控制内存与外设之间的数据交互,该方式不需要CPU的大量中断负载,因此会大大提高CPU的工作效率,在CPU对其进行配置时为从机,而进行数据的搬运时作为主机。
  4. 一些算法IP:包括加解密算法RSA等
  5. 一些高性能的外挂存储器控制器及接口(ExtSRAM,USB2.0,SDhost等)

AHB和APB之间通过Bridge进行连接。

APB总线上挂载的IP:

  1. WDT(看门狗),实际上是个计数器,如果程序运行正常,CPU应该过一段时间发出一个指令让WDT置零,重新计数。如果让WDT增加到设定值而没有及时归零则认定程序没有正常工作,强制整个系统复位。
  2. Timer计时器,用于隔一段时间执行一个task。
  3. System controller:内含上电复位控制(POR)、OSC(时钟振荡器)、PLL(时钟锁相器)
  4. 算法IP:DES,加密解密系统。
  5. 一些低速外设接口IP:UART(异步通信串行总线)、SPI(同步串行总线)、IIC、GPIO(通用IO口)

每个IP对应着不同的地址空间,进行寻址时,不可超出地址空间的边界。

2.SRAMC的主要作用,以及一些常见的存储体

SRAM主要用于更高速的CPU和较低速的DRAM之间的缓存。它利用晶体管来存储数据,掉电数据丢失。与DRAM相比,SRAM的速度快,但在相同面积中SRAM的容量比其他类型的内存小。

DRAM是动态随机存储器,因为用的是电容存储的方式,所以需要不断刷新来维持存储,如计算机内存。

ROM按照发展经历了ROM只读,PROM可出厂编程一次,EPROM紫外光擦除可读可写存储器,EEPROM电可擦除存储器,flash既可擦除又可快速读取数据,又称为闪存。

3.SRAM的设计架构

SRAM的基本架构主要由两部分构成:一是ahb_slave_if.v,二是sram_core.v,若将两者视为整体则是sram_top.v。整个结构如上图所示。我们在验证时,如需进行详细彻底的验证,则需要对每个小的设计都进行验证,关注每个内部信号。若只需要总体上验证该sram,则可以对sram_top.v进行总体验证,无需关注内部信号。

其中核心的存储体为sram_core部分。共64KB(2**16byte)的地址空间,因此地址位宽需要为addr[15:0],整体可分为两个bank,靠地址的最高位addr[15]进行片选,每个bank由4个小的sram构成,共计8个小的sram,每个小sram内存空间为8KB(2**13),具体选中哪两块小sram要根据地址的addr[15]和低两位addr[1:0]决定。当进行16bit的数据读写操作时,可以选中两块小sram拼接成16bit数据的高8bit和低8bit,当addr[15]=0时,表示选中了bank0,当地址的低两位addr[1:0]=0x时,表示总线低16bit数据有效,因此将总线上的低16bit数据分成两个8bit放入bank0的sram1和sram0中,当读取16bit数据时,应将两个sram拼接在一起读取,当地址低两位addr[1:0]=1x时,表示总线高16位数据有效,将总线上的高16位数据放入bank0的sram3和sram2中。同理可推导出size=8bit时,低两位为00时,低8位有效,低两位为01时,次低8位有效,低两位为10时,次高位有效,低两位为11时,高位有效。就靠这样的片选设计方式,实现了低功耗的8bit、16bit、32bit的数据读写。

我们这里以顶层信号描述为例可以将上述微架构简化为如下所示的形式:

 SRAM的输入输出信号具体如下:

信号名

方向

位宽

详细说明

SRAM控制器输入信号

Hclk

Input

1

AHB总线时钟信号

Sram_clk

Input

1

Sram core时钟信号

Hresetn

Input

1

AHB总线复位信号

Hsel

Input

1

Sram控制器片选信号

Hwrite

Input

1

写使能

Hsize

Input

[2:0]

2’b00:字节

2’b01:halfword

2’b10:word

Hburst

Input

[2:0]

未用到

Htrans

Input

[1:0]

2’b10:单笔数据传输或第一笔连续传输中的第一笔数据传输

2’b11:支持burst传输

Hready

Input

1

Sram控制器工作使能

Haddr

Input

[31:0]

AHB总线发送的地址

Hwdata

Input

[31:0]

AHB总线的数据输入

Dft_test

Input

1

DFT测试使能

Bist_test

Input

1

BIST测试使能

SRAM控制器输出信号

Hready_resp

output

1

AHB总线数据传输完成

Hresp

output

[1:0]

Sram控制器给AHB总线的应答信号

00:传输状态正常

Hrdata

output

[31:0]

AHB总线读slave数据

Bist_done

output

1

1’b1:bist测试结束表示

Bist_fail

output

[7:0]

8位分别表示8块sram功能是否正确

SRAM控制器的ahb slave接口与AMBA总线相连,其中总线上的hburst信号未用到。另外顶层中还有好几根独立于AHB接口的输入输出信号如下:

信号名

方向

位宽

详细说明

Sram_clk

Input

1

为sram_core提供工作时钟

Bist_en

Input

1

Bist测试使能

Dft_en

Input

1

Dft测试使能

Bist_done

output

1

高电平时表示bist测试结束

Bist_fail

ouput

[7:0]

8位分别表示8块sram的功能正确与否

4.接口基本功能

接口部分(ahb_slave_if)实现的是总线协议和sram协议的转换,从而实现将总线控制信号和地址信号转换为sram可识别的控制信号和地址信号。

5.熟悉AHB-SRAMC的接口时序:

如上图所示,本设计的SRAM只支持SINGLE读写,暂不讨论BURST的ICRS和WRAP读写方式(但这两种方式需要掌握)。AHB流水线的工作模式允许总线上在一个时钟上升沿时刻存在一笔未完成的trans,因为要完成先寻址再传输的过程,因此成功地传递一笔trans可以将整个过程分为两个部分,地址相位阶段和数据相位阶段,数据相位总是滞后于地址相位一个时钟周期。当ready信号为高时,表示SRAM已准备好进行一笔读/写操作。由主机(SRAMC的上行数据端)经过AHB总线发送来的数据包(此时的数据包应该包含地址信息haddr,控制信号hburst,hwrite,hsize等上个时钟周期传递来的地址相位数据包,以及hwdata,hrdata在该时钟周期传递来的数据相位数据包)经过ahb_slave_if信号转化传递给SRAMC,SRAMC根据地址的高两位进行片选bank,再根据地址的低两位进行bist选择。从而完成8bit、16bit、32bit的数据地址的读写,成功完成一笔trans,并反馈信号hresp。若ready信号为低,则表示SRAMC没有准备好完成一笔读写trans,需要等到ready信号为高时再进行。

6.AHB-SRAM的设计需求

1.低功耗,方法:通过片选信号实现低功耗

SRAM的低功耗主要考虑:sram memory的读写时的功耗与standby,支持低功耗工作(8位/16位):在多块SRAM组成的存储器中,根据不同地址,系统选择一块或者多块的SRAM,未被选中的SRAM片处于low-power standby状态。

2.支持单周期读写。(时钟反相)

3.能够根据AHB总线的读写宽度进行相应的SRAM位宽选择进行8位、16位、32位的SRAM数据读写操作。

4.支持DFT/BIST测试

7.AHB总线协议相关

AHB是一种较为高速高性能且复杂的总线,支持多主机多从机,流水线的工作方式,挂载一些高性能和高带宽的IP。

AHB的输入信号端口及相关信息如下:

端口名

端口位宽

端口方向

端口所属时钟域

端口含义描述

HCLK

输入

clock source

AHB接口时钟信号,AHB所有信号在该时钟的上升沿处有效

HRESET_n

输入

Reset controller

AHB接口复位信号,低电平时,所有信号端复位

HADDR

[31:0]

输入

master

32位地址总线

HTRANS

[1:0]

输入

Master

当前传输类型,可以是NONSEQ/SEQ/IDLE/BUSY

HWRITE

输入

Master

信号为高时,表示一个写传输,为低时表示一个读传输

HSIZE

[2:0]

输入

Master

表示传输的大小,可以是字节8bit、半字16bit和字32bit。

HBURST

[2:0]

输入

Master

表示传输是否组成了突发的一部分。支持4个、8个、或者16个节拍的突发传输并且突发传输可以是增量或者回环。

HWDATA

[31:0]

输入

Master

写数据总线用来在写操作期间从主机到总线从机传输数据。

HSELx

输入

Decoder

每个AHB从机都有自己独立的从机选择信号,并且用该信号来表示当前传输是否打算传送给选中的从机。该信号时地址总线的简单组合译码。

HRDATA

[31:0]

输出

Slave

读数据总线用来在读操作期间从机向总线主机传输数据。

HREADY

输出

Slave

当HREADY为高时,表示总线上的传输已经完成。在扩展传输时,该信号可能会拉低。

HRESP

[1:0]

输出

Slave

传输响应给传输状态提供了附加信息。提供4种不同的响应:

OKAY/ERROR/RETRY/SPLIT

几种常见的读写:

  1. SINGLE读写方式:

 

  1. Burst突发操作—增量INCR: 

4拍增量突发时序如下:

说明:hsize控制每一beats数据大小为32bit,共发生4beat的传输,首次传输地址为0x38,则时序图如上。注意到,每一beat数据的size=word(32bit),而一个地址可以存放一个字节(8bit)数据,因此32bit数据需要4个地址才能将一笔数据存下,因此每一拍数据的地址增量为4,存放的地址依次为0x38.0x3c,0x40,0x44。

那如果size= halfword呢?如下为size=16bit时,发生8beat的传输时序图:

如图,当size=16,相当于32位的总线声明每次传输的32位数据中只有16位有效,具体可根据地址判断是高16位有效还是低16位有效。由于传输一笔data要占两个地址,因此,地址的增量为2.

熟悉了上述所有内容后,我们便可以开始着手于项目了。

  • 10
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 《FPGA自学笔记——设计与验证》是一本关于FPGA设计和验证的入门教材。本书以VHDL和Verilog两种HDL语言为主要工具,通过实例讲解FPGA的基本概念、设计流程和验证方法。同时,本书还通过实例演示了如何使用Xilinx ISE和ModelSim这两个主流软件工具进行FPGA设计和验证。 本书的内容分为五个部分,分别是FPGA基础知识、FPGA设计流程、FPGA验证方法、FPGA性能优化以及FPGA应用实例。其中,FPGA基础知识部分介绍了FPGA的基本构成、组成部件以及通用数字电路设计知识;FPGA设计流程部分从设计输入、RTL设计、布局布线、实现生成等方面详细介绍了FPGA设计流程;FPGA验证方法部分主要介绍了功能验证和时序验证这两个方面的知识;FPGA性能优化部分介绍了FPGA的几种性能指标以及如何通过一定的优化方法提高FPGA性能;FPGA应用实例部分通过几个实例演示了如何应用FPGA进行数字电路设计。 本书的难度适中,适合初学者学习和参考,同时也可以作为FPGA初学者的参考书籍。本书涉及的知识点较为全面,可以为初学者提供一个全面的FPGA设计和验证入门指南。其内容易于理解,实例讲解深入浅出,对于想要学习FPGA设计和验证的人群来说是一本很好的参考书。 ### 回答2: 《FPGA自学笔记——设计与验证》PDF是一本很好的自学FPGA的书籍。这本书包含了FPGA基本概念、设计流程、Verilog HDL语言、开发工具、测试方法等多个主题,非常详尽地介绍了FPGA的基本知识和开发技巧。读这本书可以帮助我们更好地理解FPGA的原理和功能,从而更加熟练地掌握FPGA的设计和验证。 此外,这本书还提供了很多实例来帮助我们更好地理解FPGA的设计和验证。这些实例包含多种应用场景,例如数字逻辑、时序控制、通信等,能够帮助我们从不同角度学习FPGA的相关知识。而且,这本书还提供了实验指导,通过做实验来让我们更深入地理解FPGA的各种知识和技能。 总之,这本书《FPGA自学笔记——设计与验证》PDF是一本非常好的FPGA自学指南,通过阅读这本书,我们可以掌握FPGA基本知识和开发技能,更好地应用FPGA进行各种应用开发。我相信,读完这本书,你一定能够对FPGA有更深刻的认识,并且能够灵活运用FPGA进行各种应用开发。 ### 回答3: 《FPGA自学笔记——设计与验证》是一本以FPGA为研究对象的书籍。它详细介绍了FPGA的诸多特性和应用。该书主要分为两部分,第一部分介绍了FPGA的基本概念,并讲解了Verilog的语法和使用方法。第二部分是实践性较强的部分,通过编写案例代码进行实际操作。 该书着重强调了FPGA设计流程,通过案例演示了FPGA设计的全过程。该书还提供了大量的练习题和案例代码,读者可以通过反复练习和实际操作,逐渐掌握FPGA的设计和验证技能。 总体来说,《FPGA自学笔记——设计与验证》是一本非常实用的FPGA入门教材。它从基础知识入手,循序渐进地讲解了FPGA的各个方面。并且,该书重点讲解了如何运用Verilog语言进行FPGA设计,这对FPGA初学者来说是一个非常实用的指南。 如果你对FPGA领域感兴趣,且希望通过自学来掌握FPGA的基本操作和设计方法,那么《FPGA自学笔记——设计与验证》是一本非常值得推荐的书籍。  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值