本次笔记内容:
P13 计算机组成原理(13)
P14 计算机组成原理(14)

本节课对应幻灯片:

  • 组成原理52 verilogHDL
  • 组成原理53 fpgahardware

本节课内容为“实验预备课”,由讲电路与硬件的老师讲解。

因为数字逻辑课数设课,已经把VHDL语言比较透彻了,因此本节课主要讲解:

  • 可编程逻辑器件介绍
  • 硬件编程方法与原则
  • 硬件编程流程

文章目录

  • 可编程逻辑器件设计
    • FPGA
    • 查找表
    • Xilinx公司产品概述
    • 典型应用领域
    • 发展趋势
  • 硬件设计的方法与原则
    • 设计原则
      • 面积和速度的平衡与互换
      • 功耗考虑
      • 硬件原则
      • 系统原则
      • 同步设计原则
    • 设计流程
      • 设计、输入和综合
      • 约束
      • 设计实现
      • 设计仿真
  • Vivado进行硬件设计的流程
  • VHDL注意事项
    • 描述方式
      • 行为描述
      • 数据流(寄存器传输RTL)描述
      • 结构化描述
    • 进程
    • 信号与变量
      • 信号的赋值:
      • 变量赋值语句
      • 例:信号和变量值带入的区别
      • STD_LOGIC STD_LOGIC_VECTOR
      • 数据类型的转换
    • 描述限制
  • 实验平台

可编程逻辑器件设计

programmable logic device

  • PLD是电子设计领域中最具活力和发展前途的一项技术,它的影响丝毫不亚于70年代单片机的发明和使用。
  • PLD能做什么呢?可以毫不夸张的讲,PLD能完成任何数字器件的功能,上至高性能CPU,下至简单的位片电路,都可以用PLD来实现
  • 目前有多家公司生产CPLD/FPGA,主要有:ALTERA(Intel),XILINX,Lattice,Actel 。

我么计组课的实验就是要用PLD写一个CPU。

FPGA

  • Field Programmable Gate Array 现场可编程门阵列
  • FPGA基于SRAM的架构,集成度高,以LE(包括查找表、触发器及其他)为基本单元,有内嵌Memory、DSP等,支持IO标准丰富。

内嵌了Memory表示不用专门去实现memory,因为专门用逻电实现需要消耗很多门(12个门1个位)。

查找表

基于查找表(Look-Up-Table)的原理与结构:

  • 采用这种结构的PLD芯片如altera的ACEX,APEX系列,xilinx的Spartan,Virtex系列等。
  • 查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM
  • 工作原理:
    • 当用户通过原理图或HDL语言描述逻辑电路;
    • 软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM;
    • 每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。

例如,输入“与门”。

如上,其以LUT代表实际的逻辑电路。

但是这样造成一个问题:RAM中进行查找,速度肯定没有直接运算做。因此FPGA的延迟、速度都难以预测。

XilinxFPGA主要部件:

  • 可编程输入输出单元(IOB)
  • 可编程逻辑块(CLB)
  • 时钟管理模块(DCM)
  • 片内RAM(BRAM)
  • 布线资源
  • 内嵌功能单元
  • 内嵌硬核

Xilinx公司产品概述

  • FPGA
    • Virtex 系列
    • Spartan器件系列
  • CPLD
    • XC9500系列
    • CoolRunner系列
  • 其他
    • 配置器件SPROM(S系列 P系列)
    • IP核

典型应用领域


数字信号基本上都可以用PLD实现。

发展趋势

  • 高密度,大容量,高速度
  • 低成本,低电压,微功耗,微封装
  • 基于IP的设计方法
    • FPGA厂家
    • 开源硬件组织
  • 动态可重构
    • 通信系统
    • 重构计算机
  1. Altera的StratixIV,680k个逻辑单元,相当于1000万门,超过20M的内部ram,1360个18*18的乘法器,8.5Gbps的48个高速收发器,以及1667Mbps(533Mhz)DDR3的内存接口
  2. 通讯系统:适应不同体质和不同标准的通信要求,满足软件无线电技术的发展3g,4g
  3. 开源硬件:如OpenRISC,LEON这类开源CPU
  4. 重构计算机:国外研究比较多,FPGA具有并行处理和动态配置能力,促使计算机自动改变硬件构架来适应正在运行的程序

硬件设计的方法与原则

设计原则

  • 面积和速度的平衡与互换
  • 功耗考虑
  • 硬件原则
  • 系统原则
  • 同步设计原则
面积和速度的平衡与互换
  • 面积速度数字系统设计考虑的两个重要指标,FPGA作为快速原型设计和系统验证的方法,首先就要考虑到这两个因素直接的平衡问题;
  • 面积指某个FPGA设计综合之后占用的系统资源数,一般用占用的逻辑单元数量及IO接口数量来衡量,这一指标综合软件一般都能给出;
  • 更小的面积通常代表更低的成本
  • 简单说,速度通常指系统工作的频率,高频率常常代表高速度
  • 实际上,进行速度优化不仅仅是简单提高频率,而是要仔细考虑系统各个模块在各种工作状态下的时序要求;
  • 另外可以通过并行操作提高速度
  • 在一定的工艺条件下,面积和速度常常是一对矛盾,因此需要考虑面积和速度的转换问题

面积换速度:

  • 将原本复用的模块进行复制,变为并行操作的模块,以牺牲面积来换取速度;
  • 很多被复用的模块都是具有逻辑承接或时间先后关系的,无法直接并行化;
  • 需要修改硬件设计,重新对模块做规划。

例子如下:

速度换面积:

  • 和利用面积换速度正好相反,把并行模块进行复用,以节省面积;
  • 逻辑上更为简单,理论上,只要用足够的存储器,总能把并行的功能相同的模块进行复用;
  • 但是要优化好存储器的管理,节省存储器,工作也并不简单。
功耗考虑
  • 动态功耗和逻辑翻转变化的频率成正比;
  • 设计时要考虑尽可能不要让所有的单元同时翻转,避免引起过大的功耗;
  • 例如,对于状态机的状态分配,之所以采用Gray码(格雷码),另一个重要原因就是为了降低功耗

课上用的板子,如果把所有的IO以25M的速度不停翻转,10W的电源“吃不住”。

硬件原则
  • 用HDL描述硬件进行数字系统,首先应该考虑的是硬件的实现;
  • 程序的可读性,必须以硬件实现为前提
  • HDL描述的是硬件的结构和各个模块之间的连接关系,在设计前应对硬件本身有清晰的了解,然后用适当的HDL进行描述;
  • 注意避免软件思维
系统原则
  • 数字系统设计应该从宏观系统全局的角度进行考虑:例如对于模块等的复用和合理组织所得到的效果远比对于小部分代码的反复推敲大
  • 设计前应对所用FPGA的底层硬件资源有所了解:
    • 底层可编程硬件单元
    • Xilinx的为Slice
    • Altera的为LE
    • Block RAM单元
    • 布线资源
    • 可配置IO单元
    • 时钟资源
同步设计原则
  • 在目前的条件下,采用异步电路设计并不理想,而现在的FPGA芯片都是为同步电路设计优化的
  • 单纯从IC设计角度看,同步电路比异步电路更加消耗资源;
  • 从资源考虑,关键要优化两种资源的比例;
  • 另外,同步时序电路具有没有毛刺、信号稳定等优点;
  • 同步时序电路中延时的产生;
  • 同步时序电路中输入的同步。

设计流程

  • 设计、输入和综合
    • 原理图
    • 硬件描述语言(不建议把一个模块设计得特别大)
  • 设计实现
    • 生成比特流文件
  • 设计验证
    • 门级仿真
    • 下载
设计、输入和综合
  • 方案论证、系统设计和FPGA芯片选择等准备工作
  • 输入是将系统或电路以某种形式输入给EDA工具的过程
  • 创建设计后可以进行功能仿真,也称为前仿真,是在编译之前对用户所设计的电路进行逻辑功能验证
  • 综合就是将较高级抽象层次的描述转化成较低层次的描述

层次化设计对原理图和HDL都很重要:

  • 可以将设计概念化
  • 将设计结构化
  • 使调试设计更容易
  • 使设计的不同部分的不同输入设计方法(原理图,HDL,本地编辑)能更容易结合
  • 使更容易的更新设计,其中包括设计,实现,以及在设计过程中验证个别元件
  • 减少优化时间
  • 便于并行设计
约束
  • 如果想要对设计中的时间参数或者布局参数进行约束,设计者可以指定映射、块布局、以及时间规范
  • 映射约束:指定逻辑块如何映射到可配置的逻辑块
  • 模块布局:块布局可限制在指定位置,可以是多个位置中的其中一个,或者是一个位置区域。
  • 时序规范:可以指定设计中路径的时间要求。
设计实现

从逻辑设计文件映射或适配到指定的器件开始,到物理设计布线成功并生成比特流文件时结束。

设计仿真
  • 综合后仿真:把综合生成的标准延时文件反标注到综合仿真模型中去,可估计门延时带来的影响。
  • 时序仿真与验证:也称后仿真,是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规板级仿真与验证。
  • 板级仿真:主要应用于高速电路设计中,对高速系统的信号完整性、电磁干扰等特征进行分析,一般都以第三方工具进行仿真和验证。
  • 芯片编程与调试:将编程数据下载到FPGA芯片中。

Vivado进行硬件设计的流程

2019年的ppt中涉及了软件的使用,在老版本的视频中没有。

VHDL注意事项

老版本的视频中,具体讲了VHDL的注意事项,包括:

  • 描述方式
  • 进程
  • 信号与变量
  • 描述限制

描述方式

  • 行为描述:描述该设计单元的功能,即该硬件能做什么。
  • 数据流(寄存器传输RTL)描述:数据流描述又称为寄存器传输描述,以此描述数据的传输和变换。
  • 结构化描述:描述该设计单元的使件结构,即该硬件是如何构成的。
行为描述

数据流(寄存器传输RTL)描述


这种描述较难使用硬件实现。

结构化描述


这种描述,最好不要与行为描述结合在一起。

此外,注释一定要写清楚。

进程

PROCESS的激活与挂起

  • 进程有两种状态:激活与挂起
  • 一般带有0个或几个敏感信号,是 PROCESS的输入信号
  • 运行开始时(初始化),所有进程均被激活,并执行
  • 遇到wait语句进程挂起。
  • 当等待语句条件满足时,进程再次被激活,并从等待语句处接着运行。
  • 执行完最后一条语句后,返回第一条语句等待敏感信号发生变化,若无则接着执行

  • 各进程之间并行执行
  • 各进程内部顺序执行


如上图,左边是A、B变化都会影响到q的变化,右边是敏感信号表只让A影响q,B不影响q。在实际操作中,应该合理设计敏感信号表。

信号与变量

信号与变量的区别:

  • 信号是硬件中连线的抽象描述,信号在元件的端口连接元件;变量在硬件中没有类似的对应关系,它们们用于硬件特性的高层次建模所需的计算中。
  • 信号赋值有延退(如果不指定延退,则延退为0),而变量因为不是实际物理量,因此变量的赋值就不允许有延迟。
  • 进程( PROCESS)语句只对信号敏感而不对变量敏感;
  • 变量的赋值符“:=”,其值立即被赋予变量,下一条语句该变量的值就为新赋的值。信号赋值符“<=”,不会立即发生赋值,下ー条语句仍使用原来的信号值;
  • 信号是全局性的,变量是局部性的。
信号的赋值:



更换一种形式,如下。

按照软件思维,左边理解成A与B相等;但实际上,A与B是时刻互换的。

变量赋值语句

如上,注意:

  • 变量在进程挂起时,保持不变;
  • 子程序变量在每次调用时赋初值。
例:信号和变量值带入的区别

在PROCESS中,信号赋值是很特殊的语句:只有进程结束时,信号才更新

STD_LOGIC STD_LOGIC_VECTOR

一般常用的端口数据类型为STD_LOGIC、STD_LOGIC_VECTOR:

  • 在STD_LOGIC1164包中定义;
  • 包含九值逻辑系统。


如果使用CASE语句,要注意OTHERS即没有在本次中用到的逻辑值的情况的处理。

数据类型的转换


整型和实数型转换没有用。

描述限制

  • 禁止在一个进程中存在两个边沿测的寄存器描述
  • 禁止使用IF语句中的ELSE项
  • 寄存器描述中必须代入号


如上,不可以这么写。


如上,不可能有这样的硬件电路与之对应!

如上,a必须带入信号值。

实验平台


使用的FPGA是:

  • XC351200E
  • 逻辑单元 19512
  • 系统门数 1200k
  • CLB阵列 60×46
  • CLB总数 2168
  • 最大用户I/O 304
  • Block RAM 容量 504k bit






注意:

  • ISE软件无需版本太高;
  • 一定要带有库spartan2
  • 一定要使用模拟仿真软件Modelsim以及ActiveHDL

【Computer Organization笔记07】实验课:可编程逻辑器件介绍,硬件编程方法与原则,硬件编程流程相关推荐

  1. 【Computer Organization笔记01】计算机组成原理课程要求、计算机的层次结构、计算机的发展历史

    资源Bilibili AV58129929 计算机组成原理 清华大学 刘卫东 本次笔记内容: P1 计算机组成原理(01) P2 计算机组成原理(02) 文章目录 课程信息 预热内容-课程介绍 学习目 ...

  2. 【Computer Organization笔记13】指令流水中的结构冲突和数据冲突

    本次笔记内容: P25 计算机组成原理(25) P26 计算机组成原理(26) 本节课对应幻灯片: 组成原理27 hazards1.pptx 文章目录 指令流水实现原理 指令流水的简单实现 因此,对数 ...

  3. 计算机组成原理中flashmemory,【Computer Organization笔记24】光盘,FLASH MEMORY,本单元总结...

    本次笔记内容: P47 计算机组成原理(47) P48 计算机组成原理(48) 我的计组笔记汇总:计算机组原理成笔记 本节课幻灯片:无 本节课在 2019 年系列中,被替换成了"MIPS异常 ...

  4. 【Computer Organization笔记14】指令流水中的控制冲突和异常

    本次笔记内容: P27 计算机组成原理(27) P28 计算机组成原理(28) P29 计算机组成原理(29):前24分钟 本节课对应幻灯片: 组成原理28 hazards2.pptx 文章目录 流水 ...

  5. 【数字逻辑】学习笔记 第六章 可编程逻辑器件

    文章目录 一.可编程逻辑器件 1. 概述 2. PLD的作用与特点 3. PLD的分类 二.简单PLD的原理与结构 1. 简单PLD的概念原理 2. 简单PLD的结构原理 3. PLD的阵列图符号 ( ...

  6. 【操作系统/OS笔记12】同步互斥的三种实现方法:禁用硬件中断、基于软件的解决方案、更高级的抽象

    本次笔记内容: 9.5 临界区 9.6 方法1:禁用硬件中断 9.7 方法2:基于软件的解决方案 9.8 方法3:更高级的抽象 文章目录 临界区 管理临界区的方法 方法1:禁用硬件中断 方法2:基于软 ...

  7. 实验七:掌握基本的MapReduce编程方法 (JAVA+Python实现)(编程实现文件合并和去重操作,编写程序实现对输入文件的排序,对给定的表格进行信息挖掘)

    一.实验目的: 1. 理解MapReduce的工作机制: 2. 掌握基本的MapReduce编程方法 3. 重点理解map过程,shuffle过程和reduce过程 二.实验环境: Hadoop+Ec ...

  8. 【Computer Organization笔记16】大实验任务详细说明:支持指令流水的计算机系统设计与实现

    本次笔记内容: P31 计算机组成原理(31) P32 计算机组成原理(32) 我的计组笔记汇总:计算机组原理成笔记 视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 1080P 更完 ...

  9. 【Computer Organization笔记18】大实验讨论:控制器设计、指令流程表

    本次笔记内容: P35 计算机组成原理(35) P36 计算机组成原理(36) 我的计组笔记汇总:计算机组原理成笔记 视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 1080P 更完 ...

最新文章

  1. LAMP(apache/httpd+mysql+php)环境/架构 一键安装脚本
  2. 车小米O2O保养平台搭建完毕
  3. Android软件开发需要学什么
  4. 7-68 阶乘计算 (15 分)
  5. error: numpy/arrayobject.h No such file or directory解决方法
  6. 面试指南:新人面试做好三个“第一”
  7. LVS配置(DR模式)
  8. [转载] Python3基础:08_02_面向对象编程(OOP)——类和对象
  9. Downie 4搭配Permute 3,一个完整的视频下载处理流
  10. vue读取本机的excel文件的两种方式
  11. 正则表达式过滤联系方式,微信手机号QQ等
  12. 基于F4/F7/H7飞控硬件和px4飞控固件的廉价自主无人机系统(1)-飞控
  13. 真正的免费云时代来临,免费1T全能空间提供1T免费全能空间申请,
  14. python核心教程之min函数怎么使用
  15. latex表格横向、纵向合并问题
  16. iPhone 13关闭个性化广告该怎么关 关闭个性化广告教程一览
  17. linux 服务器下查看防火墙
  18. Python实现实时获取steam数据,不用担心错过打折
  19. 微服务架构实战第十节 微服务的模拟组件测试和契约服务测试
  20. java多线程模拟购买火车票

热门文章

  1. c语言进阶.pdf,C语言程序设计进阶:文件.pdf
  2. 使用Idea部署SSM项目后,访问路径为url:8080/项目名_war_exploded的解决方案
  3. PHP连接不上MySQL解决方案总结
  4. xShell终端中文乱码完全解决方法
  5. 你如何删除ActiveRecord对象?
  6. 如何撤消与冲突的git合并
  7. JavaScript等同于printf / String.Format
  8. ios 销毁当前页面重新开启_利用Vue中keep-alive,快速实现页面缓存
  9. (clion 安装插件联网络失败,pycharm pip联网失败)当电脑选择拨号上网时,解决系统代理被篡改/pip提示“目标计算机积极拒绝,无法连接”的方法! [ 此方法绝对解决系统代理被篡改问题 ]
  10. activiti处理当前用户的任务