• ASIC设计中的常见挑战与解决方案

    在集成电路界ASIC被认为是一种为专门目的而设计的集成电路。是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。ASIC的特点是面向特定用户的需求,ASIC在批量生产时与通用集成电路相比具有体积更小、...

    09-12 218浏览
  • FPGA设计流程:算法、仿真、调试

    FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有...

    07-18 164浏览
  • 可编程逻辑件的工作原理是什么?

    可编程逻辑器件 英文全称为:programmable logic device 即 PLD。PLD是做为一种通用集成电路产生的,他的逻辑功能按照用户对器件编程来确定。一般的PLD的集成度很高,足以满足设计一般的数字系统的需要。 这样就可...

    06-13 153浏览
  • FPGA上电加载时序介绍:理解和优化系统启动过程

    目前,大多数FPGA芯片是基于 SRAM 的结构的, 而 SRAM 单元中的数据掉电就会丢失,因此系统上电后,必须要由配置电路将正确的配置数据加载到 SRAM 中,此后 FPGA 才能够正常的运行。

    2023-12-01 207浏览
  • FPGA开发外设子板模块电路设计:实现灵活可扩展的外设集成与功能拓展方案

    FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA的开发相对于传统PC、单片机的开发有很大不同。FPGA以并行运算为主,以硬件描述语言来实现;相比于PC或单片机(无论是冯诺依曼结构还是哈佛结构)的顺序操作有很大区别,也造成了FPGA开发入门较难。目前国内有专业的FPGA外协开发厂家,开发展基本电路如下: 蜂鸣器电路如图3.47所示。FM信号由FPGA的I/O口控制。当FM为高电平时,Q1的BE导通,则CE导通,蜂鸣器的5V和GND形成回路,发出声音。当FM为低电平时,Q1的BE断开,则CE断开,蜂鸣器的5V和GND断开,因此没有电流流过蜂鸣器,蜂鸣器便不发声。在后面的实验中,我们可以使用PWM信号,即以固定的时高时低的电平控制Q1的导通与否,然后达到蜂鸣器的时断时开,人耳听到的便是不同频率的声响。 图3.47 蜂鸣器驱动电路 8个LED指示灯的电路如图3.48所示,他们公共端接电源3.3V,另一端连接FPGA的I/O口。若输出高电平,LED熄灭;若输出低电平,则LED点亮。这8个LED的接口是与数码管的段选信号复用的。 图3.48 8个LED指示灯电路 3位的拨码开关电路如图3.49所示。 图3.49 拨码开关电路 如图3.50,我们可以对照实物,默认3个拨码开关应该都是拨向左侧(即1、2、3标记侧),在电路图上就是VCC3.3上拉一侧。就是说,默认情况下,3个连接FPGA的I/O口的信号SW_MODE1、SW_MODE2、SW_MODE3均为高电平。若拨码开关被拨到右侧(即标记ON侧),则采集到的输入就是低电平了。 图3.50 拨码开关实物照片 数码管电路如图3.51所示。SEG_CS0、SEG_CS1、SEG_CS2、SEG_CS3这4个信号对应控制数码管4位显示的片选信号,低电平有效,若4个片选信号都为0,则4位数码管都能点亮显示。LED0-7则也被复用为数码管的段选信号,控制一个数码管的对应段LED的亮灭状态,这一组信号对于4位的数码管是共用的。在实际控制时,我们一般会分时点亮需要显示的各个位数码管,只要时间控制得合理,人眼是很容易被“蒙骗”的,我们很容易就能看到4个不同的数字显示在数码管上。 图3.51 数码管驱动电路 A/D芯片的电路如图3.52所示。它通过一个单向(从A/D芯片到FPGA)数据传输的SPI接口与FPGA相连。FPGA通过这组SPI接口读取当前模拟电压值。为了得到不同的模拟电压值,我们的板子在A/D芯片的模拟输入端设置了一个3.3V的分压电阻,当跳线帽连接了P3的1-2引脚时,调节可变电阻R24的阻值便能改变当前A/D采样的数据。跳线帽若连接P3的2-3引脚,则AD芯片的输入模拟电压来自于D/A芯片的当前输出。 图3.52 A/D芯片驱动电路 D/A转换电路如图3.53所示。这个D/A芯片通过I2C接口与FPGA连接,FPGA通过这组I2C接口输出数据,相应D/A芯片的VOUT输出模拟电压值。若跳线帽连接P2的1-2引脚,则不同的模拟电压值输出驱动D9指示灯呈现不同的亮度。 图3.53 D/A芯片驱动电路 FPGA(现场可编程逻辑器件)产品的应用领域已经从原来的通信扩展到消费电子、汽车电子、工业控制、测试测量等广泛的领域。而应用的变化也使FPGA产品近几年的演进趋势越来越明显:一方面,FPGA供应商致力于采用当前最先进的工艺来提升产品的性能,降低产品的成本;另一方面,越来越多的通用IP(知识产权)或客户定制IP被引入 FPGA中,以满足客户产品快速上市的要求。此外,FPGA企业都在大力降低产品的功耗,满足业界越来越苛刻的低功耗需求。

    2023-12-01 166浏览
  • DSP+CPLD空间瞬态光辐射信号实时探测系统解决方案

      探测系统对输入的空间瞬态光辐射信号进行实时识别处理,反演估算出空间瞬态信号能量大小并报告发生时刻。采用DSP+CPLD的数字处理方案,利用dsp的高速数字信

    2023-12-01 173浏览
  • MCS51单片机与FPGA/CPLD的总线接口逻辑电路

    长期以来,单片机以其性能价格比高、体积小、功能灵活、可靠性高、易于人机对话和良好的数据处理能力等方面所具有的独特优点,被广泛应用于各个领域。但受其内部资源的限制,在很多应用中,单片机需要在片外扩展相关资源,如程序存储器、数据存储器、I/O口以及中断源等。随着可编程逻辑器件(PLD)及EDA技术的发展,在系统设计中经常会用到FPGA/CPLD来扩展单片机的相关资源,使其有机结合,缩短开发周期,适应市场需要。FPGA/CPLD具有高速、高可靠以及开发便捷、规范等优点,在功能上与单片机有很强的互补性。以此两类器件相结合的电路结构在许多高性能仪器仪表和电子产品中被广泛应用。基于这种需求,笔者设计了MCS51单片机与FPGA/CPLD的总线接口逻辑电路,实现了单片机与FPGA/CPLD数据与控制信息的可靠通信,使FPGA/CPLD与单片机优势互补,组成灵活的、软硬件都可现场编程的控制系统。 1单片机与FPGA/CPLD的接口方式 单片机与FPGA/CPLD的接口方式一般有两种,即总线方式与独立方式。 1.1总线方式 MCS51单片机具有很强的外部总线扩展能力,利用片外三总线结构(即数据总线、地址总线、控制总线)很容易实现单片机与FPGA/CPLD的总线接口。其基本原理框图如图1所示。 图1总线方式原理框图 单片机与FPGA/CPLD以总线方式通信的逻辑设计,重要的是要详细了解单片机的总线读写时序,根据时序图来设计逻辑结构,其通信的时序必须遵循单片机内固定的总线方式读/写时序。FPGA/CPLD的逻辑设计也相对比较复杂,在程序设计上必须与接口的单片机程序相结合,严格安排单片机能访问的I/O空间。但是,单片机以总线方式与FPGA/CPLD进行数据与控制信息通信也有许多优点: ◆ 速度快。其通信工作时序是纯硬件行为,对于MCS51单片机,只需一条单字节指令就能完成所需的读/写时序,如“MOV @DPTR,A”和“MOV A,@DPTR”。 ◆ 节省PLD芯片的I/O口线。仅通过19根I/O口线,就能在FPGA/CPLD与单片机之间进行各种类型的数据与控制信息交换。 ◆ 相对于非总线方式,单片机编程简捷,控制可靠。 ◆ 在CPLD/FPGA中通过逻辑切换,单片机易于与SRAM或ROM接口。这种方式有许多实用之处,如利用类似于微处理器系统的DMA的工作方式,首先由FPGA/CPLD与接口的高速器件进行高速数据采样,并将数据暂存于SRAM中采样结束后,通过切换,使单片机与SRAM以总线方式进行数据通信,以便发挥单片机强大的数据处理能力。 1.2独立方式 与总线接口方式不同,几乎所有单片机都能以独立接口方式与FPGA/CPLD进行通信,其通信的时序方式可由所设计的软件自由决定,形式灵活多样。其最大的优点是FPGA/CPLD中的接口逻辑无需遵循单片机内固定总线方式的读/写时序。FPGA/CPLD的逻辑设计与接口的单片机程序设计可以分先后相对独立地完成。事实上,目前许多流行的单片机已无总线工作方式,采用独立方式可以很好地使它们与FPGA/CPLD结合。独立方式的接口设计方法比较简单,其基本原理框图如图2所示。直接将单片机的I/O端口线与FPGA/CPLD的I/O相连即可。 图2独立方式原理框图 2总线接口逻辑设计 由于单片机以总线方式与FPGA/CPLD进行数据与控制信息通信有许多优点,因此在设计中,单片机与FPGA/CPLD接口采用总线方式。 2.1接口设计思想 对MCS51单片机与FPGA/CPLD以总线方式通信的逻辑接口设计,应该详细了解MCS51单片机的总线读/写时序,并根据时序图来设计逻辑结构。MCS51单片机总线读/写的时序如图3所示,其时序电平变化速度与单片机工作时钟频率有关。 图3MCS51单片机总线读/写时序 CLK为单片机时钟信号,ALE为地址锁存使能信号。在读/写周期开始后,CPU把低8位地址送到P0口总线上,把高8位地址送到P2口总线上,利用ALE下降沿可将低8位地址锁存于地址锁存器中,而高8位地址信息一直锁存在P2口锁存器中;同时单片机利用读指令允许信号PSEN的低电平从ROM中将指令从P0口读入,其指令读入的时机是在PSEN的上升沿之前。接下来,由P2口和P0口分别输出高8位和低8位数据地址,并由ALE的下降沿将P0口的低8位地址锁存于地址锁存器。然后根据读/写信号的状态读写外部数据,把数据送到P0口总线上;数据读/写的时机是在读/写信号的上升沿之前,将数据读入单片机或写入被寻址的地址单元。当读/写信号变为无效电平后,P0口总线变为悬浮状态,为下次总线读/写做好准备。 通过对MCS51单片机总线读/写时序的分析,可以在FPGA/CPLD中设计一个总线接口模块,实现单片机三总线信号的编码。由于在总线应用时,MCS51单片机的P0口是作为地址/数据总线分时复用的,因此应在总线接口模块中设计一个三态缓冲器,实现P0口的三态接口;又因为MCS51单片机在访问外部空间时,它的地址为16位,因此借助地址锁存使能信号ALE在FPGA/CPLD中实现高8位与低8位地址的编码,组合成16位地址,然后再根据MCS51单片机的读/写信号,实现对FPGA/CPLD的读写操作。 2.2总线接口设计 通过对MCS51单片机总线读/写时序的分析,设计了图4所示的接口电路。在FPGA/CPLD中,设计了两个模块:一个是总线接口模块,负责单片机与FPGA/CPLD的总线接口逻辑;另一个是寄存器单元及外部接口模块,运用总线接口模块来操作此模块。 图4MCS51单片机与FPGA/CPLD总线接口框图 图中整个总线接口逻辑模块将MCS51单片机的三总线信号编码成5个信号输出:16位地址信号addr16、读使能信号RD_EN、写使能信号WR_EN、数据输出信号Din及数据输入信号Dout。 在总线接口模块中,又分为3个小模块:三态缓冲模块、锁存器模块及编码模块。三态缓冲模块实现与单片机P0口接口;锁存器模块利用ALE信号锁存单片机输出的低8位地址。利用其下降沿将低8位地址锁存于FPGA/CPLD中的地址锁存器(address latch)中;当ALE将低8位地址通过P0及三态缓冲器锁存的同时,高8位地址已稳定建立于P2口;通过编码模块将高8位与低8位地址组合成16位地址addr16。同时根据单片机的读/写控制信号编码成RD_EN与WR_EN使能信号。 若需从FPGA/CPLD中读出数据,单片机则通过指令“MOVXA,@DPTR”使RD信号为低电平,使能RD_EN信号,由P0口将图中地址addr16所指单元的数据读入累加器A;但若将累加器A的数据写进FPGA/CPLD中,单片机则需通过指令“MOVX @DPTR,A”和写允许信号WR。这时,DPTR中的高8位和低8位数据作为高、低8位地址分别向P2和P0口输出,然后经ALE信号下降沿锁存,产生16位地址addr16。再由WR的低电平使能WR_EN信号,将累加器A的数据经P0口及三态缓冲器写入图中16位地址addr16所对应的单元中。实现单片机对FPGA/CPLD的读/写操作。

    2023-11-29 153浏览
  • FPGA设计过程中容易出现的问题有哪些?

    1.Found clock-sensitive change during active clock edge at timeon register "" 原因:vector source file 中时钟敏感信号(如:数据,允许端,清零,同步加 载等) 在时钟的边缘同时变化.而时钟敏感信号是不能在时钟边沿变化的.其后 果为导 致结果不正确. 措施:编辑 vector source file 2.Verilog HDL assignment warning at: truncated with sizeto match size of target ( 原因:在 HDL 设计中对目标的位数进行了设定,如:reg[4:0] a;而默认为 32 位, 将位数裁定到合适的大小 措施:如果结果正确,无须加以修正,如果不想看到这个警告,可以改变设定的位 数 3.All reachable assignments to data_out(10) assign '0', register removed by optimization 原因:经过综合器优化后,输出端口已经不起作用了 4.Following 9 pins have nothing, GND, or VCC driving datain port -- changes to this connectivity may change fitting results 原因:第 9 脚,空或接地或接上了电源 措施:有时候定义了输出端口,但输出端直接赋‘0’,便会被接地,赋‘1’接电 源. 如果你的设计中这些端口就是这样用的,那便可以不理会这些 warning 5.Found pins ing as undefined clocks and/or memory enables 原因:是你作为时钟的 PIN 没有约束信息.可以对相应的 PIN 做一下设定就行了. 主要是指你的某些管脚在电路当中起到了时钟管脚的作用,比如 flip-flop 的 clk 管脚,而此管脚没有时钟约束,因此 QuartusII 把“clk”作为未定义的时钟. 措施:如果 clk 不是时钟,可以加“not clock”的约束;如果是,可以在 clock setting 当中加入;在某些对时钟要求不很高的情况下,可以忽略此警告或在这 里 改:Assignments>Timinganalysissettings...>Inpidual clocks...>... 6.Timing characteristics of device EPM570T144C5 are preliminary 原因:因为 MAXII 是比較新的元件在 QuartusII 中的時序并不是正式版的,要 等 Service Pack 措施:只影响 Quartus 的 Waveform 7.Warning: Clock latency analysis for PLL offsets is supported for the current device family, but is not enabLED 措施:将 setting 中的 timing Requirements&Option-->More Timing Setting-->setting-->Enable Clock Latency 中的 on 改成 OFF 8.Found clock high time violation at 14.8 ns on register "|counter|lpm_counter:count1_rtl_0|dffs[11]" 原因:违反了 steup/hold 时间,应该是后仿真,看看波形设置是否和时钟沿符合 steup/hold 时间 措施:在中间加个寄存器可能可以解决问题 9.warning: circuit may not operate.detected 46 non-operational paths clocked by clock clk44 with clock skew larger than data delay 原因:时钟抖动大于数据延时,当时钟很快,而IF等类的层次过多就会出现这种 问题,但这个问题多是在器件的最高频率中才会出现 措施:setting-->timing Requirements&Options-->Default required fmax 改 小一些,如改到 50MHZ 10. Design containsinput pin(s) that do not drive logic 原因:输入引脚没有驱动逻辑(驱动其他引脚),所有的输入引脚需要有输入逻辑 措施:如果这种情况是故意的,无须理会,如果非故意,输入逻辑驱动. 11.Warning:Found clock high time violation at 8.9ns on node 'TEST3.CLK' 原因:FF 中输入的 PLS 的保持时间过短 措施:在 FF 中设置较高的时钟频率 12.Warning: Found 10 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew 原因:如果你用的 CPLD 只有一组全局时钟时,用全局时钟分频产生的另一个时 钟在布线中当作信号处理,不能保证低的时钟歪斜(SKEW).会造成在这个时钟 上 工作的时序电路不可靠,甚至每次布线产生的问题都不一样. 措施:如果用有两组以上全局时钟的FPGA芯片,可以把第二个全局时钟作为另 一个时钟用,可以解决这个问题. 13.Critical Warning: Timing requirements were not met. See Report window for details. 原因:时序要求未满足, 措施:双击 Compilation Report-->Time Analyzer-->红色部分(如 clock setup:'clk'等)-->左键单击 list path,查看 fmax 的 SLACK REPORT 再根据提示 解决,有可能是程序的算法问题 14.Can't achieve minimum setup and hold requirement along path(s). See Report window for details. 原因:时序分析发现一定数量的路径违背了最小的建立和保持时间,与时钟歪斜 有关,一般是由于多时钟引起的措施:利用 Compilation Report-->Time Analyzer-->红色部分(如 clock hold:'clk'等),在 slack 中观察是 hold time 为负值还是 setup time 为负值, 然后在:Assignment-->Assignment Editor-->To 中增加时钟名(from node finder),Assignment Name 中增加和多时钟有关的 Multicycle 和 Multicycle Hold 选项,如 hold time 为负,可 使 Multicycle hold 的值 >multicycle,如设为 2 和 1. 15: Can't analyze file -- file E://quartusii/*/*.v is missing 原因:试图编译一个不存在的文件,该文件可能被改名或者删除了 措施:不管他,没什么影响 16.Warning: Can't find signal in vector source file for input pin whole|clk10m 原因:因为你的波形仿真文件( vector source file )中并没有把所有的输入 信号(input pin)加进去,对于每一个输入都需要有激励源的 17.Error: Can't name logic scfifo0 of instance "inst"--function has same name as current design file 原因:模块的名字和 project 的名字重名了 措施:把两个名字之一改一下,一般改模块的名字 18.Warning: Using design file lpm_fifo0.v, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project Info: Found entity 1: lpm_fifo0 原因:模块不是在本项目生成的,而是直接 copy 了别的项目的原理图和源程序 而生成的,而不是用 QUARTUS 将文件添加进本项目 措施:无须理会,不影响使用 19.Timing characteristics of device are preliminary 原因:目前版本的 QuartusII 只对该器件提供初步的时序特征分析 措施:如果坚持用目前的器件,无须理会该警告.关于进一步的时序特征分析会 在后续版本的 Quartus 得到完善. 20.Timing Analysis does not support the analysis of latches as synchronous elements for the currently selected device family 原因:用 analyze_latches_as_synchronous_elements setting 可以让 Quaruts II 来分析同步锁存,但目前的器件不支持这个特性措施:无须理会.时序分析可 能将锁存器分析成回路.但并不一定分析正确.其后果可能会导致显示提醒用户: 改变设计来消除锁存器 21.Warning:Found xx output pins without output pin load capacitance assignment 原因:没有给输出管教指定负载电容 措施:该功能用于估算 TCO 和功耗,可以不理会,也可以在 Assignment Editor 中 为相应的输出管脚指定负载电容,以消除警告 22.Warning: Found 6 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew 原因:使用了行波时钟或门控时钟,把触发器的输出当时钟用就会报行波时钟, 将组合逻辑的输出当时钟用就会报门控时钟 措施:不要把触发器的输出当时钟,不要将组合逻辑的输出当时钟,如果本身如 此设计,则无须理会该警告 23.Warning (10268): Verilog HDL information at lcd7106.v(63): Always Construct contains both blocking and non-blocking assignments 原因: 一个 always 模块中同时有阻塞和非阻塞的赋值 24.Warning: Can't find signal in vector source file for input pin |whole|clk10m 原因:这个时因为你的波形仿真文件( vector source file )中并没有把所有 的输入信号(input pin)加进去, 对于每一个输入都需要有激励源的 在 QuartusII 下进行编译和仿真的时候,会出现一堆 warning,有的可以忽略,有 的却需要注意,虽然按 F1 可以了解关于该警告的帮助,但 有时候帮助解释的仍然不清楚,大家群策群力,把自己知道和了解的一些关于警告的问题都说出来讨 论一下,免得后来的人走弯路.上面是我收集整理的一些,有些是自己的经验,有 些是网友的,希望能给大家一点帮助,如有不对的地方,请指正,如果觉得好,请版 主给点威望吧,谢谢

    2023-11-24 207浏览
  • HPM6200系列MCU的可编程逻辑阵列

    一、HPM6200 系列 PLA 整体结构HPM6200 系列的 UM 中带有 PLA 的结构简图。为了方便大家把握整体结构,我也绘制了一个稍微更详细的结构图,将 PLA 外设中的大部分元素都展示出来,并给出了单个通道内的...

    2023-11-09 193浏览
  • 了解CPLD、FPGA和DSP的联系与区别

    ARM(AdvancedRISCMachines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。ARM也是单片机

    2023-07-26 217浏览
正在努力加载更多...
广告