FPGA

基于Testbench的FPGA实物自动化测试环境设计

作者:高 虎,封二强,赵 刚,2018年电子技术应用第4期

摘 要: 针对FPGA软件测试过程中仿真测试和实物测试的不足,提出了一种基于仿真测试用例的实物自动化测试环境,将用于仿真测试的Testbench进行解析处理,形成能够用于FPGA实物测试的传输信号,通过执行器将此信号转换为作用于被测FPGA芯片的实际信号,并采集被测FPGA芯片的响应,实现对FPGA的实物自动化测试。采用实物自动化测试环境验证平台对设计架构进行了验证,取得了良好的效果。

0 引言

随着FPGA设计规模的不断扩大,因FPGA软件设计而造成的质量问题也越来越突出,成为影响装备质量的重要因素[1-2]。而测试是当前解决该问题的最有效手段,因此,越来越多的型号装备产品定型过程对FPGA软件测试提出了新的要求[3]。

FPGA实现简单门电路

1. verilog实现基本门电路

  • verilog实现反相器,2输入与门、2输入或门、2输入与非门、2输入或非门、2输入异或门、2输入同或门;
  • 撰写仿真程序,对实现进行仿真测试;
  • 将仿真后的verilog代码进行综合与实现,并下载到basys3上验证;
  • 2. verilog实现2选1MUX

  • 撰写仿真程序,对其进行测试;
  • 将仿真后的verilog代码进行综合与实现,并下载到basys3上验证;
  • 2.
    led[0] sw[0] sw[1]实现2输入与门

    led[2] sw[2] sw[3]实现2输入或门

    led[4] sw[4] sw[5]实现2输入与非门

    led[6] sw[6] sw[7]实现2输入或非门

    led[8] sw[8] sw[9]实现2输入异或门

    led[10] sw[10] sw[11]实现2输入同或门

    led[12] sw[12]实现反相器

    led[13] sw[13] sw[14] sw[15]实现2选1MUX

    3.实现模块
    module fpga001(
    input [15:0] sw,
    output [13:0] led
    );

    Xilinx FPGA设计代码风格

    Xilinx FPGA设计代码风格 以后逐渐补充

    1、时钟信号的分配策略
    (1)、使用全局时钟可以为信号提供最短的延时和可以忽略的扭曲;
    (2)、FPGA特别适合于同步电路的设计,尽可能减少使用始终信号的种类;
    (3)、减少时钟摆率的一种有效方法是使用一个时钟信号生成多个时钟使能信号,分别驱动触发器的时钟使能端,也就是说让所有的触发器都在同一个使能的控制下,只有使能打开的时候,所有触发器才可以装入数据;
    (4)、避免时钟信号产生毛刺,所以要采用时序逻辑,尽量避免组合逻辑。

    2、使用SRL16移位寄存器,很灵活的配置

    3、尽量多的使用触发器资源,比如状态编码时使用独热码。

    4、信号的反相处理
    (1)、如果输入信号需要反相,则要尽可能的调用输入带反相功能的符号,而不是使用分离的反相器来进行反相
    (2)、如果一个信号反相后驱动了多个负载,则应该将反相这个功能分散到各个负载中去实现。因为在FPGA中集中反相然后驱动多个负载往往会多占用一个逻辑块,而且延时也增加了;分散信号的反相可以与其它逻辑在同一单元内完成而不消耗额外的逻辑资源。

    2、如何提高电路工作频率

    资深FPGA“老司机”设计精华总结

    作者:材哥 文章来源:玩儿转FPGA

    1、硬件设计基本原则

    速度与面积平衡和互换原则:
    一个设计如果时序余量较大,所能跑的频率远高于设计要求,能可以通过模块复用来减少整个设计消耗的芯片面积,这就是用速度优势换面积的节约;反之,如果一个设计的时序要求很高,普通方法达不到设计频率,那么可以通过数据流串并转换,并行复制多个操作模块,对整个设计采用“乒乓操作”和“串并转换”的思想进行处理,在芯片输出模块处再对数据进行“并串转换”。从而实现了用面积复制换取速度的提高。

    硬件原则:理解HDL本质
    HDL语言(verilog或者VHDL)本质上是对应的一段电路,也就是用代码去画原理图。这就是HDL语言的本质。FPGA设计要时刻把自己设计的每一个语句都明确的知道他对应的是什么结构的电路,优秀的设计师必须具备这样的素养,也是每个工程师走向高手的必经之路。

    系统原则:整体把握

    时钟方案

    1. 全局时钟和局部时钟的确定,初级时钟和次级时钟的产生方法

    2. 数据流经过的不同时钟域梳理

    3. 时钟域交叉处理

    FPGA对绝大多数的人来说相对有些陌生。经常有朋友问我,你们成天搞的这个 FPGA 到底是什么东西。

    我想很难用一两句通俗易懂的语言解释什么是 FPGA,因为当今的 FPGA 已经是一个非常复杂的系统了。打个比喻来说,对于热爱乐高的人来说 FPGA 设计就像搭积木,对于爱涂鸦的我来说 FPGA 就像是一张精密的画布。借助赛灵思这样的 FPGA 厂商提供给设计师的易用的“画笔”,有创意的设计师就能根据需求创作自己心仪的作品。

    那么这张画布有什么好处呢?且听我 一 一 道来:

    易用性:对“画家”来说,FPGA 令人生畏的地方,就是只有“硬件工程师使用”的硬件可编程模式。硬件描述语言虽然硬件发展了30多年,但是由于 HDL 是一种用形式化的语言描述极其复杂的数字系统的,抽象级别较低,因而大大提高了编程难度,限制了FPGA 的推广和普及。其次随着系统级 FPGA 和片上系统(SoC)的出现和迅速发展,FPGA 开发已不再单单只是一个模块的“编程”工作。系统设计,软硬件协同设计变得越来越重要,这也大大提高了“准入”门槛。

    FPGA三段式状态机的思维陷阱

    用三段式描述状态机的好处,国内外各位大牛都已经说的很多了,大致可归为以下三点:

    1.将组合逻辑和时序逻辑分开,利于综合器分析优化和程序维护;

    2.更符合设计的思维习惯;

    3.代码少,比一段式状态机更简洁。

    对于第一点,我非常认可,后两点在Clifford E. Cummings著的(Synthesizable Finite State Machine Design Techniques Using theNew SystemVerilog 3.0 Enhancements和The Fundamentals ofEfficient Synthesizable Finite State Machine Design using NC-Verilog andBuildGates)中多次提到,我并不完全赞同,下面谈谈我的一些看法。

    Xilinx FPGA的程序加密方法

    Xilinx所有的FPGA器件都有Device DNA,这是一个57bit的二进制序列,在器件生产的时候烧死到芯片里面,每个芯片都是唯一的。我们可以根据这个DNA,并结合相关的加密算法,来设计加密的安全流程。在这里,这个DNA安全流程就类似于ATM交易。在ATM上取钱,需要插入银行卡并输入交易密码。如果卡号和密码与存储在银行系统里的ID匹配,就会批准交易,反之,则禁止交易。具体到FPGA上的实现,如下图所示:

    在图中,Device DNA是蓝色的部分,加密算法是绿色部分,外部存储器(Flash)是紫色部分。在使用时,我们通过一个比较器给出授权结果,流程如下:

    1、器件上电,加载程序,进行FPGA配置。

    2、读取FPGA DNA,并将其发送给加密算法。

    3、加密算法生成有效的结果。

    4、比较结果和存储的校验值,如果结果和存储的校验值相同,则程序可以正常运行。否则,禁止程序运行,或设置定时炸弹,破坏外部设备。

    作者:张国斌

    1984 年,在硅谷工作的Bernie Vonderschmitt、Ross Freeman 和 Jim Barnett 共同构建了一个设想,他们梦想创立一家不同于一般的公司。他们希望创建一家在整个新领域内开发和推出先进技术的公司。并且,他们还希望以这种方式领导它:在这里工作的人们热爱他们的工作、享受工作的乐趣,并对他们所从事的工作着迷。他们创造性地推出了“无晶圆半导体”公司的概念。

    图2-1 Ross Freeman(左)是FPGA的发明人,Bernie Vonderschmitt(右)是赛灵思公司的创始人

    图2-1 Ross Freeman(左)是FPGA的发明人,Bernie Vonderschmitt(右)是赛灵思公司的创始人

    打脸GPU运算优势 FPGA/SoC自诩真未来平台

    作者:Cathal Murphy/Yao Fu;来源:新通讯 2018 年 3 月号 205 期《 技术前瞻 》

    为了满足不断攀升的数据处理需求,未来的系统需在运算能力上进行改善。传统解决方案(如x86处理器)再也无法以高效率、低成本的方式提供所需运算带宽,因此系统设计人员须寻找新的运算平台。

    越来越多系统设计人员将现场可编程门阵列(FPGA)和绘图处理器(GPU)视为能够满足未来需求的运算平台。本文将分析未来GPU、FPGA和系统单芯片(SoC)组件,能为新时代提供哪些必要的运算效率和弹性。

    云端数据中心和自动驾驶汽车等未来系统,需在运算能力上进行改善,以支持不断增加的工作负载,以及不断演进的底层算法[1]。例如,大数据分析、机器学习、视觉处理、基因体学以及先进驾驶辅助系统(ADAS)的传感器融合工作负载都超出现有系统(如x86系统)所能提供的效率与成本效益。

    系统架构师正在寻找能满足需求的新运算平台,且该平台需要有足够的弹性,以便整合至现有架构中,并支持各种工作负载及不断演进的算法。此外,许多这类系统还须提供确定性低延迟效能,以支持如自动驾驶汽车在实时系统上所需的快速反应时间。

    今天来和大家讨论FPGA中一些很基础但是也很重要的一部分——触发器,计数器,分频器。

    触发器最简单的应该是R-S触发器,其示意图及真值表如下:


    基于R-S触发器再增加两个与门,如下:

    然而真正有意义的输入是置位为0,复位为1或复位为0,置位为1。把数据端信号当作置位信号,它取反后的值就是复位端信号,如下:

    同步内容