精华内容
下载资源
问答
  • FPGA缺点、Verilog HDLVHDL缺点

    千次阅读 2017-06-28 22:13:36
    FPGA缺点、Verilog HDLVHDL缺点 Verilog HDL 优点:类似C语言,上手容易,灵活。大小写敏感。在写激励和建模方面有优势。 缺点:很多错误在编译时候不能被发现。 VHDL 优点:语法严谨,...


    FPGA优缺点、Verilog HDL与VHDL的优缺点
    优点:类似C语言,上手容易,灵活。大小写敏感。在写激励和建模方面有优势。
    缺点:很多错误在编译的时候不能被发现。

    VHDL
    优点:语法严谨,层次结构清晰。
    缺点:熟悉时间长,不够灵活。

    FPGA优点:
    设计周期短,灵活。
    适合用于小批量系统,提高系统的可靠性和集成度。

    FPGA前景:
    1 拥有DSP
    2 集成大量硬核、软核。可以应用于多种场合。
    3 片上系统

    设计难点:
    1 不同时钟域转换
    2 高速电路设计,信号完整性
    3 降低功耗

    随着现代芯片工艺的改进,FPGA的等效系统门达到到几百万门,而且工作频率也随之提高。FPGA也就大量的在电子产品中出现。在通信行业,传输网,医疗仪器,各种电子仪器,安防监控,电力系统,汽车电子,消费类电子中都大面积的使用。随产品研发周期的逐步缩短,定制型产品的开发使FPGA在后面的应用面越来越广。例如在2G通信,3G通信,以后的4G通信,wimax等等通信类的设备中它与DSP,MPU一起大量出现在其中。尤其是通信的数字化,软件无线电等概念涌现到电子行业的各个领域,芯片设计的工艺的改进,45nm工艺的出现,使得FPGA成为必不可少的流行的实惠的器件。

    FPGA 最大的特点就是灵活,实现你想实现的任何数字电路,可以定制各种电路。减少受制于专用芯片的束缚。真正为自己的产品量身定做。在设计的过程中可以灵活的更改设计。而且它强大的逻辑资源和寄存器资源可以让你轻松的去发挥设计理念,其并行执行,硬件实现的方式可以应对设计中大量的高速电子线路设计需求。 FPGA比DSP拥有更快的速度,可以实现非常复杂的高速逻辑,FPGA比ASIC(专用芯片)有更短的设计周期和灵活性,免去昂贵的开版费用,而且可以随时裁减,增加你想要的功能达到规避设计风险,回避芯片厂商的限制。另外知识产权的概念不断涌现,仿制别人抄袭,FPGA完全让设计的智慧得以保护。让公司的利益在较长时间内得到保证。随FPGA芯片供应商的重视和第三方公司的重视,现在有非常现成的IP核被提供,进一步缩短设计周期缩短,减小开发成本。现在很多免费的软IP核和硬 IP核的出现更是压缩了成本。

    在目前的电子行业中真正懂得FPGA设计的工程师是非常紧缺的,很多公司要找到合适的FPGA工程师还是要费一番周折。那么FPGA设计的难点在什么地方呢?FPGA设计的第一条就是要设计者做到:你虽然写的是软件,但是你是地地道道的硬件工程师!很多工程师都在用软件的思想在做,忽略了硬件本身。所以第一难点就是缺乏硬件思想的软件设计者。第二难点就是对时序电路概念不清晰,很多时候都知道程序运行中的实际时序问题。第三个难点就是对多时钟域的处理。第四个难点就是不清楚自己所应用的FPGA芯片的内部结构。第五个难点对开发软件没有真正吃透,只是简单的应用,常常忽略了其中很中的一些属性设置和各个设计阶段的报告。第六个难点缺乏对FPGA周边硬件和所在系统的认识,使设计很被动。第七个难点程序设计没有问题,仿真也没有问题,综合也没有问题,但是最后不一定布线通过,布线通过时序不合格,即使合格在不同环境下出现不稳定状态。

    在当前的FPGA器件提供商中XILINX和ALTEAR这两家公司是份额最大的供应商,估计占90%以上。这两家都有强大的技术支持,芯片的稳定性和产品系列都特别的多。涵盖了高中低几个设计层次。如果要追求高可靠比如军工,航天,强电磁干扰等条件下的设计可以考虑ACTEL公司的 FPGA,不过价格很贵。如果想一味的追求成本可以考虑LATTIC公司的FPGA,就是稳定性和相同条件下的布线成功率较差。

    在开发语言方面 VHDL和VORILOG是现在最流行的,其他还有ABEL,SYSTEM C这样的语言,不过用的较少。VHDL就是语法严格,显呆板,但是一旦语法检查通过,程序上出错的机会就比较小。VORILOG很灵活,类似C,比较容易上手,语法检查通过,程序也不一定正确。其实语言不重要,重要的是设计思想。只有这个两个语言中任意掌握一种就可以进行设计了。

    展开全文
  • FPGA(Field-Program mable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。...但是 他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更
  •  (2)基于DSP+FPGA的架构,优点是,充分发挥DSP对算法分析处理和FPGA对数据流并行执行的独特优势,提高图形处理的性能;缺点是,上层CPU端将OpenGL绘图函数封装后发给DSP,DSP拆分后再调用FPGA,系统的集成度不高...
  • FPGA与cpld比较

    2010-04-03 10:48:38
    CPLD/FPGA既继承 ASIC的大规模、高集成度、高可靠性的优点,又克服普通ASIC设计周期长、投资大、灵活性差的缺点,逐步成为复杂数字逻辑电路设计的首选器件。FPGA和 CPLD都是可编程逻辑器件,两者之间是有差别的。
  •  (2)基于DSP+FPGA的架构,优点是,充分发挥DSP对算法分析处理和FPGA对数据流并行执行的独特优势,提高图形处理的性能;缺点是,上层CPU端将OpenGL绘图函数封装后发给DSP,DSP拆分后再调用FPGA,系统的集成度不高...
  • 基于FPGA的PCI接口控制器的设计实现 胡菲 卢益民 引言 PCI总线是高速同步总线,采用高度综合优化的总线结构,目前广泛应用于各种计算机系统中,总线以32位(或64位)数据总线、33MHz(或66MHz)的时钟频率...
  • 电荷耦合器件(CCD)作为新兴固体成像器件即图像传感器,具有体积小,重量轻,分辨力高,噪声低,自扫描,工作速度快,灵敏度高,可靠性好等优点,受到人们高度重视,广泛应用于图像传感、景物识别、非接触无损...
  • 当前,基于主从处理器结构系统架构已经成为一种主流(如 DSP+FPGA,MCU+FPGA等),FPGA是在 ASIC基础发展出来,它克服了专用 ASIC不够灵活的缺点其他中小规模集成电路相比,其优点主要在于它有很强灵活性...
  • 这一缺陷,综合具备了GPS和INS的优点,即使在GPS信号被遮挡的时候,其解算的结果也是稳定连续 的。传统的航空摄影测量需要布设大量地面控制点,效率低下。利用POS系统能得到精确的相机曝光 时刻以及相片外方位元素,...
  • 0、引言  软件无线电是具有可重配置硬件平台的无线设备,可以跨多种通信标准,其基本思想是以开放性、可扩展、结构最简的硬件为通用平台...ASIC即专用集成电路,它的优点是速度高、体积小以及低功耗,缺点在于可编程
  • 静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多。 1.2 动态显示 动态驱动是将所有数码管的8个显示笔划的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制...

    FPGA数码管静态与动态显示区别

    1.1 静态显示
    静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多。
    1.2 动态显示
    动态驱动是将所有数码管的8个显示笔划的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。
    DE2-115开发板为静态显示

    展开全文
  •  缺点:很多错误在编译时候不能被发现。Verilog HDL较自由语法,也容易造成初学者犯一些错误,这一点要注意。  VHDL  VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路设计中。目前,...
  • 电子密码锁传统密码锁相比,具有安全性高、成本低、易操作等诸多优点。...目前应用广泛、技术成熟的电子密码锁还属按键式和卡片式密码锁,但卡片设备具有...论文针对当前电子密码锁的发展现状,设计了一种基于FPGA的按键
  • 电子密码锁传统密码锁相比,具有安全性高、成本低、易操作等诸多优点。...目前应用最广泛、技术最成熟的电子密码锁还属按键式和卡片式密码锁,但卡片设备具有...论文针对当前电子密码锁的发展现状,设计了一种基于FPGA的
  • 绍一种以FPGA为核心,以MC9S12NE64单片机为以太网控制器以太网接口设计;...将FPGA与单片机相结合,避免了传统以单片机为核心网络接口诸多缺点,结构简单、开发便捷,具有高速传输、高可靠性等优点
  • FPGA与单片机相比,有着频率高,内部延时小,内部存储容量大等优点,比单片机更适应高速数据采集场合。FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件基础...
  • FPGA_SC ... 当然,SC中有优点也有缺点。 它仅适用于某些应用程序,尤其是图像处理和CNN。 请查看我论文(Lee,Abdul Halim,DOI:10.7717 / peerj-cs.309)以获取更多信息。 欢迎引用。 SC中
  • 针对FPGA的结构性能特点,深入分析了以往使用单片机或复杂的可编程逻辑器件(complicated programmable logic device, CPLD)实现IRIG-B 码(DC码)解码的优缺点;提出了一种基于现场可编程门阵列(field programmable ...
  • 欢迎FPGA工程师加入官方微信技术群Flash读写控制方案Xilinx相比,Intel(Altera)提供了读写控制器方案。...自行设计Flash读写控制器的优点在于可控性很高,缺点在于需要花费时间设计并进行稳定性测试。相应的,...

    欢迎FPGA工程师加入官方微信技术群

    Flash读写控制方案

    与Xilinx相比,Intel(Altera)提供了读写控制器方案。而且,同时提供了两个方案。

    首先,Altera似乎没有开放配置Flash的Pin的控制。如果没有找到办法直接控制这些Pin,也就没有办法自行设计Flash读写控制器。

    自行设计Flash读写控制器的优点在于可控性很高,缺点在于需要花费时间设计并进行稳定性测试。相应的,使用提供的Flash读写控制器IP,优点是免去设计和测试的成本,但缺点在于兼容性。

    由于提供的IP可选项很少,可以使用的操作命令也有限,所以很难保证这个IP能兼容哪些Flash。即使能兼容,也可能只能使用基础的操作命令,而部分高级操作比如快速擦写等,不保证能兼容。

    方案一:JTAG烧录Flash

    在专栏文章《FPGA远程更新设计的需求分析》中,分析了EDA工具通过JTAG烧录Flash的操作。

    1.上位机主动发起配置,FPGA被动接收数据进行重配置,此时的配置模式是上文提到的基于JTAG的被动配置。此操作的结果是将FPGA配置为一个Flash的读写器。
    2.配置完成后,上位机开始发送/接收Flash的数据,数据通道为JTAG。FPGA通过JTAG接收到数据之后,根据需求发起对Flash的读写操作,将需要更新的数据写入Flash,完成更新。此过程是更新Flash的过程,烧录过程中Flash只收到FPGA的控制。
    3.Flash更新完毕后,在合适的时候让FPGA进行重新配置(例如重新上下电),FPGA会开始主动配置过程,从Flash中读取配置数据完成加载。

    配置过程是将原厂提供的JTAG-Flash读写控制器加载到FPGA中,在通过JTAG和这个内部的FPGA控制器烧录Flash。这个JTAG-Flash读写控制器本身也是一个设计。Xilinx并没有将这个设计独立提供出来给用户,不过Altera将这个设计以IP的方式提供给用户使用。

    a1d7f0aedb11d24392c268aac4a28a82.png

    上图是串口Flash的读写控制器,在IP Catalog中还能找到Altera Parallel Flash Loader这个IP。这里仅以Altera Serial Flash Loader(下文简称ASFL)为例做简单介绍。关于IP的具体细节,请参考IP的手册。

    将这个IP集成到FPGA工程中就可以直接使用。烧录工具为Quartus Programmer,烧录文件为.jic文件。

    9b78527d9c4ab363dcdc5dd7265df6a7.png

    在烧录的时候,点选jic文件,上一行会自动勾选上,第一行也会变为Factory default SFL image。此时即为下载内置的镜像,将FPGA配置为Flash读写控制器。如果将第一行勾选去掉,则工具会自动尝试在FPGA当前设计中寻找ASFL IP。如果找不到,则直接提示错误,不会做任何变化;如果找到ASFL IP,则利用JTAG进行Flash的烧录工作。这里重点提示,使用这个方法的时候务必取消第一行自动勾选上的Factory default SFL image。

    这种用法的最大限制在于需要使用Quartus Programmer工具和JTAG。如果有条件,在环境中拥有Quartus支持的OS系统和JTAG Cable的硬件连接,则可以使用这个方案。由于有OS的存在,镜像Jic文件可以通过OS来管理文件的传输,再通过远程访问OS,启动Quartus Programmer,烧录Jic文件。

    但是,对于某些环境,OS和JTAG是无法获取的。所以还需要另一个方案来适配更多的应用场景。

    方案二:Flash读写控制器

    方案一的IP结合了JTAG和FLASH读写控制器,数据通路固定是JTAG。而Altera ASMI Parallel(下文简称ASMI)这个IP就仅仅是个Flash读写控制器,可以自由的设计数据来源。

    8bd80820a98d0207d4e94e5f70755b2c.png

    关于这个IP的使用,可以参考IP的文档。需要进行相关信号控制来控制IP的行为。这里对这个IP的使用不进行详细的描述。

    这个方案的一个问题是,IP默认只支持Intel(Alterad)的Flash,所以如果Flash是其它型号,则不能保证百分之百兼容。建议查看IP文档,使用比较基础的读写控制命令(通常性能差一些但兼容性好的命令);同时在更换Flash之后,进行测试看看是否兼容。

    方案一的截图中,有一个配置参数:

    44371acec83b0597805614eebdbc0fe1.png

    方案二的ASMI IP配置中,有一个配置参数:

    31750693e6234954f6a5eccb9d26faaa.png

    勾选这两个参数,可以让两个方案同时存在与一个FPGA设计中。这样,可以更自由地选择使用那个方案来进行更新。由于Flash只有一个配置接口,所以两个方案肯定是无法同时使用的。


    Altera配置文件分析

    方案一已经是个完备的方案,无奈对使用环境有着较高的要求。所以方案二才是更通用的方法。不过相对方案一直接使用jic文件,方案二只是一个Flash读写控制器,并没有说明将什么数据写入Flash。所以需要找到写入文件的数据。

    Altera常见的几个配置文件:sof/pof/jic/rbf

    sof文件是最基本的文件,用这个文件作为基础可以直接用Quartus Programmer进行JTAG下载。同时也可以通过这个sof文件生成其它文件。

    pof是针对altera Flash的配置文件器。需要用Quartus Programmer软件,通过JTAG烧录Flash。由于这个文件需要使用JTAG连接Flash,所以在很多环境下并不使用这个文件进行配置。

    jic是间接配置Flash的文件,具体使用已经介绍过了。

    rbf文件,从名称看是二进制文件,可能最接近写入Flash的文件。

    由于并没有在Intel(Altera)网站上找到几种配置文件的具体数据内容和格式,所以需要手动分析文件内容。实际上这几种格式没有一种可以直接写入Flash

    这里已经得到最终的数据文件,暂时称之为bin文件,下面直接给出各个文件无法使用的原因。文件基于Altera A10系列FPGA。

    1.sof

    对比最终写入Flash的数据,几乎看不到正常的数据,怀疑是存在一些Quartus工具才能识别的命令。

    2.pof文件

    pof文件是针对Flash的,所以里面内容和rbf文件有大部分都是相同的。

    不过差别在于pof文件前面有大量的不明数据,不清楚具体作用,所以

    4dd1f8f7ccc56da75a0ab22d25bf3b00.png
    左边为rbf文件,右边为pof文件

    和正确的bin文件相比,pof前面的开头部分确实也是多余的。所以rbf也比pof文件更接近于最终的bin文件。

    3.rbf文件

    rbf文件确实几乎非常接近最终的文件。

    67607b25ee79cf6699d6eee9338c20e7.png
    左边为bin文件,右边为rbf文件

    从文件格式中可以看到,数据可以对应上,只是位序有点不同。

    不过比较大的问题是,rbf文件的开头相比bin文件,少了一些内容。

    61128f4c5cca093b70848260bd304d24.png
    左边为bin文件开头,右边为rbf文件开头

    调整位序对FPGA开发来说,几乎没有难度。不过开头这些数据的作用,就不太清楚了。如果有条件可以尝试写入rbf文件,试试FPGA能否从Flash中加载成功。本人尝试过两次,失败后直接尝试bin文件。对于rbf无法成功的原因,并没有深究。所以失败也有可能是操作失误导致的,而rbf文件是可以这样使用的。

    4.jic

    对比发现jic和pof文件的格式位序一样,但开头依然多出部分数据。多出来的部分长度几乎和pof文件一样,但数据内容由不完全相同,所以怀疑开头部分包括了一些Quartus工具的操作命令,如果直接写入Flash,可能会导致无法加载成功。

    从上述分析可以看到,Quartus提供的四种配置文件,并没有保证直接对应Flash中的数据,对比后也发现多少都有点出入。由于没有找到对各自文件详细的内容说明,所以也不便于直接修改。

    所以这就是使用ASMI方案的最大问题,如何获取最终的写入Flash的数据。

    从这一点说,Xilinx的方案其实更直接,直接使用原始的二进制数(bit、bin)文件,或者标准文件——MCS。


    Flash标准内容文件

    Xilinx的MCS文件,后缀mcs是Xilinx独有的,但是其内容是标准格式。

    MCS为文本文件,查看内容,可以看到两种内容。第一种是相对较短的一行,第二种是相对较长的一行。

    e94eb00ea6d18ec130ecbe98c29c9e95.png

    真实数据是保存在较长的一行。分析后可以看到较长行的长度都是一样的。具体内容是,前端若干位是控制符(包含地址),然后是具体数据,之后是校验码。找到规律后,就可以直接提取其中内容了。

    Quartus中没有直接提供这个格式的文件,不过Quartus下用于Nios2开发的套件(nios2eda)中,有一个小工具:sof2flash

    在Nios2 Shell中启动这个工具,可以将sof文件转为.flash文件。查看这个.flash工具,就能发现这个文件的语法结构和MCS文件一样。

    那么后面的事情就很容量了,用脚本语言(Python)写一个转换工具,生成一个文件,后缀名可以随意取(本人使用.bin这个后缀)。将这个文件以二进制形式读取,直接传给ASMI IP写入Flash,从实际效果看,没有任何问题,FPGA顺利从Flash启动。

    这里要感谢:武汉芯路恒科技有限公司的小梅哥。当初是小梅哥的提点,才知道有.flash这个文件的存在。

    这个方法算是另辟路径,用不是很正式的方法将sof文件转为了一个标准的Flash内容描述格式。本人使用的是这种格式。不过,从道理上分析,Altera应该是提供了正确的配置文件。

    通过朋友向Altera技术支持打听,得到一个方案,这里云分析一下。先给出结论:这个方案应该是可行的

    通过Quartus提供的文件转换工具,可以将sof转为pof文件。这一步上文已经做了分析,pof并不是直接写入Flash中的文件。

    再一次使用文件转换工具,利用pof文件,转为rpd文件。这个rpd文件,就是需要使用的文件。

    分析一下rpd文件和.flash文件中的内容

    b1397690a056507ca4a0b460a1a90139.png
    左边为.flash文件内容,右边为.rpd文件内容

    从开头部分就可以看出,数据是有明显的对应关系,56565656调整位序后就可以得到6a6a6a6a。第10行的20000000和04000000也能看出对应的关系。

    从这个结果可以看到.rpd的数据是可以使用的,只是在位序方面需要做一些调整。

    这一还有一些地方需要讨论,就是文件大小。

    sof文件代表FPGA的配置文件,FPGA的配置文件都是和FPGA的型号相关。与Xilinx不同,Altera的sof文件似乎无论是否打开压缩,均不会改变文件大小。

    bin文件是从.flash文件中提取的,.flash是从sof中提取的。所以bin文件包含的是完整的配置信息。实际使用中可以发现这个bin文件的大小会比sof文件小一些。而.flash文件由于是文本格式,所以无法比较大小。

    jic、pof和rpd文件,这三个文件是针对Flash的,所以这三个文件的大小是依据Flash而变化的。使用中可以发现这三个文件其实比sof/bin文件大很多。但这三个文件几乎是一样大小的。

    用一个例子来说明,假设sof文件是20MB,Flash是128MB。那么bin文件代表sof文件中有效内容,可能是16MB,而由于Flash固定是128MB,则jic/pof/rpd三个文件都几乎是128MB大小,其中只有开头的16MB是有效内容,后面的数据基本为填充的无效数据(或者在生成时添加了其他数据源的数据)

    这里有一个例子,rpd文件,二进制用文本展开,32bit一组用8位16进制数表示,一共33554432组,其中ffffffff占了22578142,可以看到几乎大部分都是无效的flash初始数据。

    33554432*32bit / 1024/1024 / 8 = 128MB

    这个128MB的Flash,大概三分之二都是无用的Flash数据。

    这可以侧面验证,jic/pof/rpd文件虽然很大,但其中有效数据并没有很多。

    所以,如果只有一个镜像的远程更新,那么bin文件其实是很方便的,但生成的方法会麻烦一些。如果直接使用rpd文件,代价是要么写入大量无用数据,要么确认一下有效数据的结尾,来避免大量无效数据的写入。

    9c94498a972c9f54971a466a45173e02.png

    欢迎通信工程师和FPGA工程师关注公众号

    35568c3b291ae467f6a7f9ff39d5eabf.png

    FPGA微信技术群

    欢迎大家加入全国FPGA微信技术群,这里有一群热爱技术的工程师,在这里可以一起交流讨论技术!

    a4f117aec0d509c856e2edc0fb06e00c.png

    用手指按住就可以加入FPGA全国技术群哦

    FPGA IP核服务:各类优质IP核服务商,服务到位,有保障!有需求的可以直接联系群主!

    FPGA技术群平台自营:Xilinx Altera 镁光、三星、海力士、ADI TI ST NXP 等品牌的优势代理分销商,欢迎大家有需求随时发型号清单,我们将在第一时间为您提供最优竞争力的报价!价格低于您原有供应商5%以上!欢迎询价-直接把需求发给群主!

    FPGA技术群官方鸣谢品牌:Xilinx、 intel(Altera)、microsemi(,Actel)、LattIC e,Vantis,Quicklogic,Lucent等

    展开全文
  • 现场可编程门阵列(FPGA)是在专用ASIC基础上发展出来,它克服了专用ASIC不够灵活的缺点其他中小规模集成电路相比,其优点主要在于它有很强灵活性,即其内部具体逻辑功能可以根据需要配置,对电路修改...
  • 针对传统MIL-STD-1553B总线体积大、成本高的缺点,提出了一种基于FPGA和HI6110多通道1553B MT设计方案。该方案将数据打包缓存在SDRAM中,外部设备通过PCI总线读取SDRAM中总线监视数据,并通过PCI接口对模块进行...
  • 基于FPGA的RS232异步串行口IP核设计

    千次阅读 2020-10-25 15:07:20
    串行传输指的是组成字符的若干位二进制码排列成数据流以串行的方式在一条信道上传输。通常传输顺序为由低位到高位,传完...异步传输方式的优点是实现字符同步比较简单,收发双方的时钟信号不需要严格同步。缺点是对每个

    串行传输指的是组成字符的若干位二进制码排列成数据流以串行的方式在一条信道上传输。通常传输顺序为由低位到高位,传完这个字符再传下一个字符。因此收、发双方必须保持字符同步,以使接收方能够从接收的数据比特流中正确区分出与发送方相同的一个一个的字符。这是串行传输必须解决的问题。串行传输只需要一条传输信道,易于实现,是目前主要采用的一种传输方式。

    在串行传输中,如何解决字符的同步问题,目前主要存在两种方式:即异步传输和同步传输。异步传输方式的优点是实现字符同步比较简单,收发双方的时钟信号不需要严格同步。缺点是对每个字符都需加入起始位和终止位,因而传输效率低。

    同步传输是以固定的时钟节拍来发送数据信号的,因此在一个串行数据流中,各信号码元之间的相对位置是固定的(即同步)。接收方为了从接收到的数据流中正确地区分一个个信号码元,必须建立准确的时钟信号。与异步传输方式相比,由于它发送每一字符时不需要单独加起始位和终止位,故具有较高的传输效率,但实现起来比较复杂。

    本课题我们将重点讨论异步串口通信的设计与实现。

    3.2串行通信协议

    串行通信接口按电气标准及协议来划分包括Rs-232、Rs-422、Rs485、LVDS等。RS-232、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。LVDS是近几年发展起来的新型接口标准,主要应用于高速数据传输领域。本课题我们将设计基于RS232的串口通信系统,这里重点介绍一下RS232串口接口。

    目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通信中增加通信距离的标准,它采取不平衡传输方式,即所谓单端通信。典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5到+l5V,负电平在-5到-15v电平。当无数据传输时,线上为TTL电平,从开始传送数据到结束,线上电平从TTL电平到RS-232电平再返回TTL电平。接收器典型的工作电平在+3到+l2v与-3到-12v。Rs-232是为点对点(即只用一对收、发设备)通信而设计的,其驱动器负载为3到7k。。由于RS-232发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约30米,最高速率为20kb/s。所以RS-232适合本地设备之间的通信。

    3.2串行通信硬件接口介绍

    目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422,RS485较远),若距离较远,需附加调制解调器(MODEM)。这里我们采用的9针的串口结构,如图3.1所示。

     

    图3.1 串口结构示意图

     

    图3.2 25针与9针串口对比图

    这里主要介绍9针的结构。

    1.载波检测:确定调制解调器是否连接到了可用的电话线路。

    2.接收数据:计算机接收调制解调器发送过来的信息。

    3.传输数据:计算机向调制解调器发送信息。

    4.数据终端就绪:计算机通知调制解调器自己已准备好通话。

    5.信号地线:针脚接地。

    6.数据集就绪:调制解调器通知计算机自己已准备好通话。

    7.请求发送:计算机询问调制解调器是否可以发送信息。

    8.同意发送:调制解调器通知计算机可以发送信息。

    9.振铃指示器:发起呼叫后,计算机指示检测到振铃的信号(发送自调制解调器)已收到。

     

    电子通信领域,波特率即调制速率,指的是信号被调制以后在单位时间内的波特数,即单位时间内载波参数变化的次数。它是对信号传输速率的一种度量,通常以“波特每秒”(Bps)为单位。 波特率有时候会同比特率混淆,实际上后者是对信息传输速率(传信率)的度量。波特率可以被理解为单位时间内传输码元符号的个数(传符号率),通过不同的调制方法可以在一个码元上负载多个比特信息。调制解调器的通讯速度。波特率是指线路状态更改的次数。只有每个信号符合所传输数据的一位时,才等于每秒位数。 为了在彼此之间通讯,调制解调器必须使用相同的波特率进行操作。如果将调制解调器的波特率设置为高于其他的调制解调器的波特率,则较快的调制解调器通常要改变其波特率以匹配速度较慢的调制解调器。

      由于本系统需要设计的是波特率可控的,所以需要通过设置不同的波特率来进行串口通信。通常情况下,波特率和时钟频率之间的关系可以用如下的公式表示。

                                                        (4.1)

    假设系统的时钟频率为40Mhz。要产生波特率为9600的串口通信,那么需要的分频数为:

                                       (4.2)

    转换为16进制,分频值即为:

    由计算公式,我们将时钟频率40MHZ除以波特率9600的两倍,可以得到一个分频系数2083.3333,又由于我们的串口通信的8位通信,应此要将获得的分频值再除以8,我们得到260,转化为16进制16'h104,这个就是我们得到的分频值。

        常用的波特率有2400,4800,9600,19200等,为了方便,这里我们就采用这三组波特率。那么其分频值为:

     

     

     

     

    其VHDL代码如下所示:

     

    这里通过选择语句实现四种波特率的选择。但是在实际仿真过程中,设置40000000会使仿真时间很长,所以在仿真的时候,做如下修改:

     

    其仿真波形如下所示:

     

    图4-2 2400波特率

     

    图4-3 4800波特率

     

    图4-4 9600波特率

     

    图4-5 19200波特率

    以上就是不同波特率的选择方式。本质上波特率的控制就是系统时钟的不同分频。通过综合,其RTL图如下所示:

     

    图4-6 波特率控制模块RTL图

    这里我们采用的是利用状态机来实现串口通信,当发送数据位的时候,状态在1到8的时候,利用移位的方法,将数据一位一位的发送出去,将状态作为计数器一个一个的相加,这样,对应的发送一位数据,将其中的状态累加,即进入下一个状态,从而实现数据位的发送。由于接收器、发送器异步工作,无需联接接收和发送时钟。接收器采取对输入数据流高度采样方式,通常采样为16,并根据采样值确定位值。按惯例,使用16个采样值的中间三个值。

    异步串口通信协议作为UART的一种,工作原理是将传输数据的每个字符一位接一位地传输。下图给出了其工作模式:

    图4-7 串口波形帧格式

    在启动一次发送或接收操作之后,串行UART(不论是软件还是硬件形式的UART)并不需要连续监控I/O线。在发送一个字符时,每个位周期,UART只需驱动一次发送信号线的状态,从起始位到8个数据位直到结束位依次设置每个位的电平。在接收一个字符时,UART在第一个下降沿开始工作,之后只需在每个位时隙的中央对接收线上的信号状态进行一次采样。 我们可以用一对状态机来表征软件UART的行为,一个状态机用于发送字符,另一个用于接收字符。

    VHDL代码如下所示:

    最后一个WHEN判决就是实现了串口数据的发送,其仿真波形如下所示:

    图4-8串口发送

    如上图所示,当发送数据为10101100的时候,串口将其从最低位开始传输,即发送0,0,1,1,0,1,0,1当发送完最后一个1的时候,done信号产生高电平说明传输完毕。

        串口的接收模块和发送模块原理基本相同,当接收到一个串行信号的时候,其将信号写入一个移位寄存器中,然后移位寄存器进行移位,然后接收新的串行信号,从而完成信号的接收,其原理比较简单,其VHDL代码如下所示:

    其仿真波形图如下所示:

     

    图4-9串口接收波形

    当接收到串行信号的时候,当输出接收准备信号的时候,开始接收信号,这里already信号之后出现的四个1和四个0,所以转换为并行信号后就是00001111。

    展开全文
  • FPGA入门五问

    2019-09-11 11:43:50
    同类型产品相比,他们区别在哪?他发展前景如何?发展趋势是什么样?大概了解这些东西后,会有个大概感觉,这样就不至于混乱。 下面是我入门FPGA时疑惑一些东西,去查了一些把他列了出来,如果有好...
  • 它具有适应性的优点、可选的特性和考虑到被文件描述的硬件结构特征,这些特点可以改进和简化系统级的设计,为最终的产品设计和生产打下基础。设计中对包括20种IO标准在内的各电器参数按照用户手册描述进行仿真验证,...
  • 二、状态机的优点与存在的问题 优点:状态机的优点显而易见,结构分明、易读易懂易排错,逻辑清晰。 缺点:两个状态转换时,容易出现过渡状态;运行过程中,可能进入非法状态;在一种器件上稳定工作,移植到另一种...
  • 目录 一、“复位”概述 1.1 什么是复位 1.2 复位的目的 1.3 复位的分类 ...3.2.1 同步复位的优点: 3.2.2 同步复位的缺点: 3.2.3 异步复位优点(同步复位缺点相对应来看): 3.2.4 异步复位缺点(同...
  • 分析了图像处理系统的功能和任务,给出了处理系统的硬件结果、FPGA的功能模块、DSP的软件框架和模块。通过地面原理样机开发,验证了系统设计的正确性和高效性。  关键词:ADSP21060 Virtex II 图像处理系统 积分...
  • 而USB通用串行总线则具有安装方便、高带宽、易扩展等优点,其中USB2.0标准具有480Mbps最高数据传输率,这使USB成为本系统所选接口主要类型。控制方面,传统数据采集通常使用单片机或DSP作CPU来进行控制和数据...
  • 而USB通用串行总线则具有安装方便、高带宽、易扩展等优点,其中USB2.0标准具有480Mbps数据传输率,这使USB成为本系统所选接口主要类型。控制方面,传统数据采集通常使用单片机或DSP作CPU来进行控制和数据处理。...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

fpga的优点与缺点