自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(224)
  • 资源 (19)
  • 收藏
  • 关注

原创 同步时序设计时应值得注意的事项

同步时序设计时一下事项应值得注意:异步时钟域的数据转换。组合逻辑电路的设计方法。同步时序电路的时钟设计。同步时序电路的延迟。同步时序电路的延迟最常用的设计方法是用分频或者倍频的时钟或者同步计数器完成所需的延迟,对比较大的和特殊定时要求的延时,一般用高速时钟产生一个计数器,根据计数产生延迟;对于比较小的延迟,可以用D触发器打一下,这样不仅可以使信号延时了一个时钟周期,而且完成了信...

2018-07-23 09:27:30 629

原创 FPGA同步和异步电路

 在学习一门技术之前往往应该从它的编程语言入手,比如学习单片机时,往往从汇编或者C语言入门。所以不少开始接触FPGA的开发人员,往往是从VHDL或者Verilog开始入手学习的。但小编认为,若能先结合《数字电路基础》系统学习各种74系列逻辑电路,深刻理解逻辑功能,对于学习HDL语言大有裨益,往往会起到事半功倍的效果。当然,任何编程语言的学习都不是一朝一夕的事,经验技巧的积累都是在点滴中...

2018-07-21 09:33:06 3653

原创 学习FPGA之前的基础知识

在学习一门技术之前往往应该从它的编程语言入手,比如学习单片机时,往往从汇编或者C语言入门。所以不少开始接触FPGA的开发人员,往往是从VHDL或者Verilog开始入手学习的。但小编认为,若能先结合《数字电路基础》系统学习各种74系列逻辑电路,深刻理解逻辑功能,对于学习HDL语言大有裨益,往往会起到事半功倍的效果。当然,任何编程语言的学习都不是一朝一夕的事,经验技巧的积累都是在点滴中完成,...

2018-07-20 20:34:22 2582

原创 高速AD中的LVDS和FPGA

通常情况下,模拟输入信号通过高速ADC的量化输出的数字信号需要交给FPGA进行处理。如果高速ADC采用LVDS输出,那么经量化处理过的数字信号将会有非常多的LVDS数据差分对。而LVDS数据接收端,接收到的LVDS差分数据对相互之间可能会存在非常小的一个时间差异,该时间差异往往是皮秒级别的,而随着高速ADC采样率的提升,目前大多数的高速ADC采样速率已经达到GSPS级别。因此皮秒级别的时间...

2018-07-19 09:49:52 5863

原创 你一定想知道的关于FPGA的那些事

首先,如果您从未接触过FPGA(现场可编程门阵列),或者有过一点基础想要继续深入了解这个行业,在这里,会向您介绍FPGA,并且向您解释FPGA都能解决什么问题,如何解决这些问题,并讨论如何将设计进行优化等等。在FPGA四个英文字母中,F代表着Field,即现场,那什么是现场呢?FPGA中的现场,是一种广义上的现场,既有指代产品所处之地,又体现的是FPGA的一种“即时性”;而P是Progra...

2018-07-18 06:42:26 755

原创 浅谈乘法器的用法

在做项目的过程中,经常遇到乘法计算,乘法器的设计就尤为重要。乘法器决定了最终电路功能能否实现,资源使用量多少以及时序性能优劣等。乘法计算中,通常会使用 “*” 或者设计乘法器实现。设计乘法器时,通常使用加法树乘法器,实现流程图如下:如上图a[3:0]与b[3:0]乘法器设计,与分布式算法类似,a*b乘法计算设计如下:a*b[0]<<0 + a*b[1]<&lt...

2018-07-17 07:57:56 3953

转载 Lattice并购案&我国FPGA发展路径

FPGA作为通信、航天、军工等领域的关键核心器件,是保障国家战略安全的重要支撑基础。近年来,随着数字化、网络化和智能化的发展,FPGA的应用领域得到快速扩张。美国在FPGA领域拥有绝对的垄断优势,已成为制约他国的重要工具之一。基于保护国家战略资产的考虑,美国总统特朗普下达行政指令,宣布停止具有中资背景的私募股权基金(Canyon Bridge)收购美国FPGA芯片制造商Lattice(莱迪思)的交...

2018-07-13 12:04:16 1520

原创 双口RAM,值得研究

在FPGA设计过程中,使用好双口RAM,也是提高效率的一种方法。官方将双口RAM分为简单双口RAM和真双口RAM。简单双口RAM只有一个写端口,一个读端口。真双口RAM分别有两个写端口和两个读端口。无论是简单双口RAM还是真双口RAM,在没有读操作的情况下,应将读使能rden信号拉成低电平,节省功耗。在两种情况下,都应当避免read-during-write,虽然可在软件中进行设置,但是,作为设计...

2018-07-12 07:38:55 8628

原创 FPGA图像加速解决方案来了

近日,百度云与联捷计算科技(CTAccel)共同推出基于FPGA的图像加速解决方案(CIP,CTAccel Image Processor),实现对JPEG转码JPEG、JPEG转码WebP(M6)等进行FPGA加速的功能,聚焦社交平台、新闻网站、电商、云相册等场景,解决了CPU做图片处理时吞吐速率低、图片处理耗时长、服务器计算资源消耗大等问题,成功地将吞吐速率提升10倍、时延降低3倍,TCO支出...

2018-07-11 07:28:15 1746

原创 中断中需要面对的问题(二)

中断中有些问题需要面对。隔离变化不知道您有没有意识到,中断处理前面这部分的设计是何等的简单优美。人是高度智能化的,能够对遇到的各种意外情况做有针对性的处理,计算机相比就差距甚远了,它只能根据预定的程序进行操作。对于计算机来说,硬件支持的,只能是中断这种电信号传播的方式和CPU对这种信号的接收方法,而具体如何处理这个中断,必须得靠操作系统实现。操作系统支持所有事先能够预料到的中断信号,理论上都不存在...

2018-07-10 07:47:26 217

原创 中断中需要面对的问题(一)

中断中有些问题需要面对。1、异常是什么概念?在处理器执行到由于编程失误而导致的错误指令(例如除数是0)的时候,或者在执行期间出现特殊情况(例如缺页),需要靠操作系统来处理的时候,处理器就会产生一个异常。对大部分处理器体系结构来说,处理异常和处理中断的方式基本是相同的,x86架构的CPU也是如此。异常与中断还是有些区别,异常的产生必须考虑与处理器时钟的同步。实际上,异常往往被称为同步中断。2、中断向...

2018-07-09 20:01:24 896

原创 FPGA之外,了解一下中断

中断是什么?中断的汉语解释是半中间发生阻隔、停顿或故障而断开。那么,在计算机系统中,我们为什么需要“阻隔、停顿和断开”呢?举个日常生活中的例子,比如说我正在厨房用煤气烧一壶水,这样就只能守在厨房里,苦苦等着水开——如果水溢出来浇灭了煤气,有可能就要发生一场灾难了。等啊等啊,外边突然传来了惊奇的叫声“怎么不关水龙头?”于是我惭愧的发现,刚才接水之后只顾着抱怨这份无聊的差事,居然忘了这事,于是慌慌张张...

2018-07-05 11:30:36 2367

原创 滤波器中的窗口

在设计有限脉宽响应的滤波器中,除了之前提过的等波纹滤波器去,还可以使用窗函数实现滤波器。matlab下使用fdatool,使用窗函数设计FIR滤波器,截止频率下衰减默认为6分贝。部分窗函数如下:具体窗函数的实现形式,这里不再赘述。矩形窗特点:矩形窗使用最多,习惯上不加窗就是使信号通过了矩形窗。这种窗的优点是主瓣比较集中,缺点是旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。...

2018-07-03 10:53:12 3867

原创 关于有限脉冲响应滤波器

数字滤波器通常用于修正或者改变时域或频域中信号的特性。最为普通的数字滤波器就是线性时不变LTI滤波器。有限脉冲响应FIR滤波器是一种LTI滤波器。N阶的FIR滤波器的输出对应于输入时间序列xn的关系形式如下:hk为滤波器系数。y0 = h0*x0y1 = h0*x1 + h1*x0y2 =h0*x2 + h1*x1 + h2*x0.....................................

2018-07-02 09:34:28 4059

原创 分布式算法原理

分布式算法(distributed arithmetic,DA)是一种以实现乘法运算为目的的运算方法。它与传统实现乘法运算的不同之处在于:执行部分积运算的先后顺序不同。简单地说,分布式算法在完成乘加功能时时通过将各输入数据每一对应位产生的部分积预先进行相加形成相应部分积,然后再对各部分积进行累加形成最终结果;而传统算法是等到所以乘积产生之后再进行相加来完成乘加运算的。与传统算法相比,分布式算法可以...

2018-06-29 09:38:31 7284 2

原创 学习FPGA过程中的理论知识

学习FPGA,先要有数电知识,最好有点C语言,,学好硬件描述语言,verilog或者vhdl。在有这些基础上,做一些小的模块不断积累。这里不再赘述。下面介绍一下关于FPGA学习过程中的一些理论知识。1、信号处理——信号与系统、数字信号处理、数字图像处理、现代数字信号处理、盲信号处理、自适应滤波器原理、雷达信号处理。2、接口应用——如:UART、SPI、IIC、USB、CAN、PCIE、Rapid ...

2018-06-28 09:56:16 543

原创 关于硬件实现FFT逆运算

前面的文章我们介绍了关于FFT的硬件实现。关于FFT的逆运算IFFT,其实就是将实现FFT的过程反过来执行就可以了。在实现过程中要注意很多问题。同 FFT一样,效率问题。以2048点为例,根据理论值计算,计算一次2048点的IFFT的时间应为130us。在采用流水线的方式下,实部计算和虚部计算均采用两块RAM实现流水线。结构如上图。在这种方式下,FPGA的片上RAM会消耗很多。为了节省RAM,可以...

2018-06-27 08:34:22 1049

原创 关于PIC和FPGA

PIC:Peripheral Interface Controller。FPGA:Field Programmable Gate Array。关于二者:区别:FPGA是逻辑门器件,可以配置成为并行逻辑模块。FPGA最大优点是并行处理。例如构建一百个与非门,FPGA可以在一个周期同时完成信号输出。PIC是controller类型,执行process,例如C语言程序。之所以称之为process,是因为...

2018-06-26 10:38:01 359

原创 关于FFT提速

前面的文章,我们对用硬件实现FFT做了简单介绍。前面文章我们使用的是控制器方式实现FFT,也就是说将一组数据放入FFT模块的RAM中,计算一次蝶形计算,完成后从RAM中读出数据继续计算。以2048点为例的话,这个FFT计算周期是2048*11*DT,DT为计算一次蝶形运算的时间,按照上述算法,整个FFT时间为2ms左右。这个速度按照控制器的方式,是可以接受的。在不需要实时性的某些场合可以使用这种方...

2018-06-25 09:07:50 2114

原创 关于以太网协议中的流量控制和背压技术

在千兆以太网的MAC 子层,除了支持以往的CSMA/CD介质访问控制协议外,还引入了全双工流量控制协议。其中,CSMA/CD协议用于解决共享信道的争用问题,即支持以集线器作为星型拓扑中心的共享以太网组网;全双工流量控制协议适用于交换机到交换机或交换机到站点之间的点-点连接,两点间可以同时进行发送与接收,即支持以交换机作为星型拓扑中心的交换以太网组网。当以太网交换控制电路端口工作在半双工模式时,符合...

2018-06-24 10:43:49 1813

原创 关于千兆以太网芯片及VLAN浅析

MARVEL出产的高端千兆以太网交换芯片,对每个端口支持不同的交换模式。包括4种模式:Secure模式:所带VLAN tag必须存在于VTU表中,且入端口必须是该VLAN成员,否则丢弃报文。Check模式:所带VLAN tag必须存在于VTU表中,否则丢弃报文。Fallback模式:入端口报文不丢弃。802.1Q Disabled:802.1Q关闭,使用端口VLAN模式,所有报文透传。前3种模式都...

2018-06-23 10:12:19 3111

原创 关于PIPELINE,也许你应该知道

所谓流水线(pipeline)设计,通常来说是流水生产线。同样,组合逻辑路径可以看作是一条生产线,路径上的每个逻辑单元都可以看作是一个阶段,都会产生时延。如果不采用流水设计,前后级组合逻辑依次工作,那么这条路径的模型就是原始的生产线。如果采用流水设计,那么前后级组合逻辑可以同时工作,就像新的生产线一样。在FPGA设计中,通常在适当组合逻辑中插入寄存器,以提高速度。这里对于插入寄存器提高速度,我们暂...

2018-06-22 08:43:38 2921

原创 coding style 的两点

通俗介绍coding style两点建议:模块划分这个如果做得不好,简直不能忍。有的代码非常莫名其妙,有些东西本身不复杂,非要将其拆成好几个部分,然后做成一个一个碎散的模块,这样并不好。举个例子,比如有的代码就是一个小fifo,单独搞成了一个模块,一个小队列搞成了一个小模块。然后,信号每进出一次模块就会改变一次名字,导致阅读其代码大脑内存消耗很大,很吃力。不得不说,频繁的对同一信号进行变量名更换是...

2018-06-21 09:29:28 163

原创 谈谈GPU与FPGA的一些看法

从几个方面来介绍一下GPU和FPGA。从峰值性能来说,GPU(10Tflops)远远高于FPGA(<1TFlops)。GPU上面成千上万个core同时跑在GHz的频率上还是非常壮观的,最新的GPU峰值性能可达10TFlops以上。GPU的架构经过仔细设计(例如使用深度流水线,retiming等技巧),在电路实现上是基于标准单元库而在critical path上可以用手工定制电路,甚至在必要的...

2018-06-20 10:35:55 5783

原创 FPGA中的平方根

作为纯数字电路的FPGA,实现平方根是比较麻烦的。毕竟硬件不支持这种算法。好在厂家的IP核中有相关的平方根IP库,所以用起来也很方便。上图是在QUARTUS下调用库中的IP核,综合适配后的资源使用情况,逻辑单元使用的1369个,占总资源的22%,片上硬件乘法器使用了16个。可以说是在资源有限的情况下,使用资源量还是很大的。前几篇文章中,我们介绍了使用CORDIC算法计算三角函数sin和cos的值。...

2018-06-19 10:28:45 9666

原创 FPGA设计中的float

在通常的设计中,不建议使用浮点数计算,因为浮点数计算会消耗FPGA大量的逻辑单元。但很多情况下,又需要使用浮点数进行计算提高精度。所以需要有合适的方法计算浮点运算。正常情况下FPGA只能以整形数据进行计算,必须将浮点数转换为二进制整形数据进行输入。那么小数点就在你的心中。比如,当输入123乘以241给FPGA的时候,FPGA计算的就是123*241的整形乘法,得到的结果也是整形输出,但是你也可以说...

2018-06-17 21:03:48 2046

原创 关于FFT的硬件实现

DFT在实际应用中非常重要,可以计算信号的频谱,功率谱和线性卷积等。离散傅里叶变换的公式:其中:  称为旋转因子。由欧拉公式可得:直接按DFT变换进行计算,当序列长度N很大时,计算量非常大,所需的时间非常长。FFT是 快速傅里叶变换。其算法原理这里不再赘述,网上资料或者相关书籍的介绍很多。主要分为按时间抽取法和按频率抽取法。这里介绍按时间抽取的基2算法的硬件实现。下面介绍的部分需要了解蝶形运算是什...

2018-06-16 15:54:47 4936

原创 FPGA的CNN加速,你怎么看?

网上对于FPGACNN加速的研究已经很多了,神经网络的硬件加速似乎已经满大街都是了,这里我们暂且不讨论谁做的好谁做的不好,我们只是根据许许多多的经验来总结一下实现硬件加速,需要哪些知识,考虑哪些因素。很多人都说在做FPGA的神经网络加速,可是有多少人真正拿出了实际结果,可能大部分人就是用HLS(高层次综合)写了个四五层的小网络,或者简单实现了一下卷积操作。真正要用FPGA做加速,得先明白算法的整体...

2018-06-15 16:57:21 6774 1

原创 兼顾FPGA和单片机

当今,FPGA和单片机的应用非常广泛,在有FPGA知识的基础上,笔者认为可以把FPGA作为主要的学习目标,单片机作为辅助技能。其实二者是相互促进的。不管是FPGA还是单片机的开发其实都是基于较强的逻辑性,在这一点上二者是有共同之处的,但是在程序编写的逻辑性上,FPGA所用的硬件描述语言是要超出C语言不少的。FPGA编写出一个完整的功能是需要对整个工程架构非常熟悉才能完成的,要先学好状态机,然后各种...

2018-06-14 09:49:39 2582

原创 最近做项目的一点想法

最近半个月,做个的项目。开始做测试,机器跑着,整个项目前后做了半年,有些小想法,分享于诸位:1.前期的设计工作应该做到面面俱到,否则在未来的开发中,大概率将会遇到一些问题:一,性能不满足需求,然后为了提升性能,资源又成了瓶颈;二,功能设计频繁变更;三,各个模块之间的耦合性问题,导致系统大了之后,bug无法及时收敛。然后就是不断的返工。2.及时沟通。与pcb的制作人员多沟通,减少外部走线对FPGA开...

2018-06-13 11:59:12 775

原创 初学FPGA一些建议

数字电路:这是大学里的基本课程 ,涵盖了一般数字电路的组合电路、时序电路、寄存器传输、储存器以及可编程逻辑电路(FPGA 就是其中一种),还有比较好的添加了计算机的指令集结构、处理器设计等计算机方面的内容,整个课程就很系统的介绍了硬件电路系统的整体框架。语言学习:初学 FPGA 的话,时序和组合部分内容看的差不多后,就可以学 Verilog/VHDL,弄懂其语言所表示的数字电路结构很重要,如计数器...

2018-06-12 16:50:05 884

原创 老司机带带我,FIFO不简单

FIFO,没有想象的那么简单!根据一般的原则,FIFO这件事情啊,如果能用IP先别自己手写。可以通过FPGA厂家的的IP生成工具生成相应的FIFO。FIFO中的格雷码:格雷码应用于异步FIFO的地址操作,格雷码的生成可以当做个入门练手的小模块,然后慢慢搭一个异步FIFO,把关于FPGA的时钟、复位、管教基本上都可以涉及到,绝对有帮助。FIFO满防溢出的问题也被讨论的挺多了,加个可编程满作为保护时应...

2018-06-11 21:25:01 529

原创 小小的学习FPGA建议

学习FPGA,一点小小的 建议或者总结分享。语法层面搞懂阻塞和非阻塞语句,以及Verilog语言的时序描述方法,把自己想象成编译器,尝试去编译自己写的Module,不断总结自己设计的逻辑会综合出怎么样的电路。搞明白同步和异步,最后,一定要熟练地掌握状态机的设计。这是最初级也是最基本的要求。有人说语法太简单了,这是非常片面的说法,或者非常浅显的说法,虽然verilog类似C语言,但本质上区别很大。V...

2018-06-10 12:38:09 331

原创 不厌其烦的四大集成电路

ASIC--专用集成电路ASIC原本就是专门为某一项功能开发的专用集成芯片,比如摄像头里面的芯片,小小的一片,集成度很低,成本很低,可是够用了。一个低端摄像头价格很 便宜,买一片ARM费用就不可同日而语了。后来ASIC发展了一些,称为半定制专用集成电路,相对来说更接近FPGA,甚至在某些地方,ASIC就是个大概念,FPGA属于ASIC之下的一部分。FPGA--现场可编程门阵列FPGA基本就是高端的...

2018-06-09 15:17:54 1444

原创 关于FPGA复位的认识

 xilinx推荐尽量不复位,利用上电初始化,如果使用过程中需要复位,采用同步高复位。如果逻辑工程较大,复位扇出会较多,会很影响时序,有以下常用方法:   复位信号按照不同时钟域分为rst0..rstn,每个复位信号被对应时钟域的时钟打一拍输出,复位不同时钟域,同时对所有复位寄存器用max fanout约 束。复位信号上bufg,通过全局时钟线减少信号延迟,同时可以完全忍受高扇出。不同的大模块用不...

2018-06-08 09:31:12 1160

原创 FPGA与图像处理

用FPGA做图像处理最关键的一点优势就是:FPGA能进行实时流水线运算,能达到最高的实时性。因此在一些对实时性要求非常高的应用领域,做图像处理基本就只能用FPGA。例如在一些分选设备中图像处理基本上用的都是FPGA,因为在其中相机从看到物料图像到给出执行指令之间的延时大概只有几毫秒,这就要求图像处理必须很快且延时固定,只有FPGA进行的实时流水线运算才能满足这一要求。所以要了解FPGA进行图像处理...

2018-06-07 20:07:55 3083

原创 谈谈对zynq的浅显理解

zynq并不能说是一个嵌入arm核的FPGA。从它的启动过程就可以发现,绝对是arm主导的,所以称它为以高性能FPGA为外设的双核arm或许更为合适。以下是优势:第一个:开发环境的大集成。从hls到vivado到sdk,对于一个不熟悉FPGA的嵌入式软件工程师来说,完全可以把它当做简单的双核ARM,使用例程中搭建好的硬件环境,在sdk中开发。软件调试后发现某些算法太慢,速度上不去,可以用hls把这...

2018-06-06 09:31:23 35709 1

原创 嵌入ARM硬核的FPGA

目前,在FPGA上嵌入ARM硬核的包括Xilinx的zynq系列以及Intel 的CYCLONEV系列。Zynq出来有一定市场,但是这个市场不是传统FPGA的主流市场,而是为了和微处理抢一些控制领域的市场。但是目前在反响上,听说,不如预期,首先对小公司来说,同时熟悉ARM和FPGA的人不多,在大公司来说,由于他们面向的市场对专业分工要求更高,一般都使用FPGA+CPU的方式,对这类Zynq这种新鲜...

2018-06-05 09:35:45 7678

原创 FPGA时序约束一点总结

 时序约束的一点总结。打拍。掌握好时序。手动分配位置,这个不是一定有效。打破层级或者物理综合,或者自动加流水等综合优化参数调整。根据实际情况使用异步时钟策略。换速度更快的片子。最也进接手一个对时序要求很高的项目,说说小编的一些感受。按照上面这个顺序来设计。首先要让时序收敛而且使用资源较多,大概就只有两条路可以走:一个是换资源和速度更快的片子,还有就是使用软件进对每个模块进行区域的划分。设计开始不想...

2018-06-04 09:34:26 953

原创 FPGA时序优化简单窍门

 尽量用硬核,比如硬件乘法器,这个应该都知道。结构上的pipeline,简言之就是“拆",最极端的情形是拆到源和目的Reg间只有基本的组合逻辑门,比如说~a & b之类...;当然FPGA里实际不必这样,打个比方,两个xbit的数据做比较,若芯片内是4输入LUT,若有pipeline的必要,那么流水级最多用[log4(x)]+1就够了。 系统上的流水,也就是打拍,副作用是带来latency...

2018-06-01 08:59:37 937 1

STM32射频例程

STM32单片机驱动射频芯片资料,工程例程,包含文档说明

2018-09-12

STM32-FM1702

STM32单片机驱动射频芯片FM1702,C语言实现,包含C文件和H文件

2018-09-12

STM32 USB_HID实现

STM32以HID方式实现USB与上位机通信,C语言实现,可直接应用。

2018-09-12

ARM协处理器

ARM9 中MUU的工作原理,详细介绍了MUU工作的原理

2012-09-12

并口JTAG电路

将并口转换为JTAG接口的原理图,实用可靠

2012-09-12

volatile_unsigned_int

嵌入式C语言开发必用,volatile_unsigned_int详解

2011-09-09

s3c2440LCD控制器详解

s3c2440LCD控制器寄存器设置详解以及代码分析

2011-09-08

嵌入式 C语言

嵌入式C语言编程,手把手交ARM2440C语言程序。

2011-09-08

s3c2440 20

三星s3c2440芯片 中文手册 第20章

2011-08-29

s3c2440a 21

三星s3c2440 ARM9 第21章 详细中文资料

2011-08-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除