还有几天就要交文章终稿了,三年的研究生生活也快要结束了,时间飞快,岁月如梭,但学习技术的热情仍然不能松懈,不懂的东西太多,需要实时保持奋斗!!过些天会继续更新<FPGA全程进阶---实战演练>内容,此电子书是笔者三年所做过的一些项目总结,又有擅长记录的习惯,于是整理成博客. 过些天会更新的内容有C++学习初步,友晶科技 DE1-Soc板卡学习笔记,Altium Designer画板技巧,在去下一家之前尽量更新完毕. 今天讲一下Signal Tap II的使用. 1 基础知识讲解 本章主要是讲解…
笔者最近几天在做视频采集板卡时,视频显示端打算采用 USB2.0接口+上位机 显示,其中USB需要做阻抗匹配.通常情况下USB的阻抗值需要做到90Ω±10%.下面就讲解一下关于阻抗匹配的知识,哪里说得不对的,还望大家批评指正. 在高速电路中,如USB.HDMI.DDR.LVDS设计中往往要注意阻抗匹配问题,高频信号在传输线中传播时所遇到的阻力称为特性阻抗,包括容抗,感抗,阻抗.为了保证信号在传输过程中不发生反射现象,信号尽量保持完整,降低传输损耗,要对印刷电路板进行阻抗匹配.阻抗匹配的目的主要在…
大家在写程序的时候,可能会听闻,什么独热码,什么格雷码,什么二进制码等等,本节意在解释这几种编码之间的区别和优势以及用verilog怎么去实现,下面先介绍这几种编码的区别. 1 基础理论部分 1.1 独热码 独热码,在英文文献中称做 one-hot code, 直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制. 如,有十六个状态的独热码状态编码应该是:0000000000000001,0000000000000010,0000000000000100,000000…
对于很多初学者,大部分都是急于求成,熟不知越是急于求成,最终越是学无所成,到头来两手空空,要学好FPGA,必须弄懂FPGA本质的一些内容. 1.FPGA内部结构及基本原理 FPGA是可以编程的,必须通过了解FPGA内部结构才能很好地理解为什么FPGA是可以编程的.学习FPGA不能像学习其他CPU芯片一样,看到Verilog或者VHDL就像看到C语言或者其它软件编程语言一样.一条条的读,一条条的分析.要冲破软件编程的思想. 那么FPGA为什么是可以“编程”的呢?首先来了解一下什么叫“程”.启示“程…
学习FPGA,多多少少应该要懂得硬件电路的设计,这样不单单增加了自己的技能,而且还能够对FPGA的硬件实现有更好的了解. 1 模块划分 对于一个基本的FPGA硬件平台,常用的几个电路部分:(1)电源电路:(2)复位电路:(3)时钟电路:(4)外设电路:(5)配置电路.如图2.1所示. 图2.1 常用电路模块 1.1电源电路 电源电路是FPGA的核心,是“心脏”,若是电源电路设计的不合理,很可能导致整个系统的溃败,不能正常运行或者失败.对于FPGA来说,基本上包括三类电压:(1)核心电压:(2)I…
1基础理论部分 1.1分频 分频,是的,这个概念也很重要.分频是指将一单一频率信号的频率降低为原来的1/N,就叫N分频.实现分频的电路或装置称为“分频器”,如把33MHZ的信号2分频得到16.5MHZ的信号,3分频得到11MHZ的信号,10分频得到3.3MHZ的信号. 分频主要是相对于主晶振来说,用不到那么高的频率,开发板一般根据具体需要会加入晶振,一般若是功耗较高可选用50MHz,其他情况可以相对调整,如24MHz等等.那么分频的典型应用,二分频,四分频,八分频,还有任意分频. 对于分频,我们…
本章主要是讲解读者在进行FPGA逻辑设计之前的准备工作,需要下载Quartus II软件和 Modelsim 软件,一个是用来进行FPGA逻辑设计,一个是用来对逻辑进行理论分析与验证. 1.1 quartus 软件安装 现在Quartus II软件已经更新到了15.0版本,这个最新版本的一些特性如下描述: Quartus II 15.0不仅仅是增加了一些10系列的器件库,最大的升级价值在于增加了一批免费的IP,特别是对做信号处理类的用户,增加了一批免费的浮点IP,例如cordic.三角函数等等,…
1基础理论部分 VGA(video graphics array)即视频图形阵列,是IBM在1987年随PS/2一起推出的使用模拟信号的一种视频传输标准.VGA相比与现在的视频传输接口来说已经过时,不过作为最低标准,基本上制造商都会接入此接口,图11.1是常见的VGA接口. 图11.1 VGA接口 对于VGA15个引脚的相关说明,如下图所示. 图11.2 VGA引脚说明 大家做实验的时候,可能会有一个误区,那就是做实验时直接把实验板的VGA接口接到笔记本电脑上,还兴高采烈的等待着显示图像,殊不知…
本小节我们来做一个好玩的事情,就是计数器,还记得在做LED自加实验时我们就曾经提到过关于计数器的相关议题,那么这节我们就来讨论讨论. 探讨一下如下的问题:请用verilog记八个数的写法,分析这个可以更好的理解触发器的工作原理. . :]cnt; always@(posedge clk or negedge rst_n) begin if(!rst_n) cnt <= 'd0; 'd8) cnt <= cnt + 'b1; else cnt <= 'd0; end . :]cnt; al…
1 什么是FPGA FPGA也即是Field Programmable Gate Array的缩写,翻译成中文就是现场可编程门阵列.FPGA是在PAL.GAL.CPLD等可编程器件的基础上发展起来的新型高性能产物,是作为专用集成电路(ASIC)领域中的一种半定制电路出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点.图1.1是Altera Cyclone V芯片. 图1.1 Altera Cyclone芯片 说到这里,不得不提ASIC,即专用集成电路(Application…
1.若是读者第一次做板子,强烈建议画完PCB板后将PCB图打印出来,然后对照你买的芯片将芯片放置对 应的位置,然后查看所有的封装格式适不适合,否则等你做出板子来后再试,为时晚矣.笔者虽然知道要这么 做,但是笔者第一次发给工厂做回来的PCB发现有一个芯片封装画大了,而且那个芯片还是贴片封装的,这让 笔者心痛不已,300多大洋就这么要毁于一旦了. 2.在参考别人的电路时一定要注意,你想用的芯片型号的电路适不适合你参考的电路图,若是完全一致,那么可以直接照抄照搬,若是不一样,这时候要非常注意电路的设计…
1 系统方案 对于设计一款硬件平台,首先要确定整体框架,确定各个模块所需要的芯片以及电压分配情况.图2.6是笔者曾经设计的硬件平台系统. 图2.6系统框图 对于选定一个系统方案之后,接下来做的要先去查看所选用的芯片的数据手册.那么查看手册一般有几点必须要注意,(1)FPGA的工作电压,确定若FPGA正常工作需要几档电压,好设计电源电路:(2)考虑功耗,这决定着需要多大功率的电源才能驱动芯片正常工作:(3)查看时钟网络的分布,这决定在进行逻辑设计时时钟分配的问题:(4)JTAG下载电路,这一部分是…
高速电路中的电源设计 高速电路中的电源设计大概分为两种,一种是集总式架构,一种是分布式架构.集总式架构就是由一个电源输入,然后生成多种所需要的电压.如图1所示.这种架构会增加多个DC/DC模块,这样成本不可控,PCB面积也需要增加,但集总式分布架构可以提高整体电源转换效率. 图1 集总分布架构 分布式架构是先由一个模块生成一个中间电压,然后再去转换成其他单板所需要的电压,如图2所示.第一级输出可以要求有较大的噪声和纹波,第二级电源输出所需要的各种电源,这时必须考虑纹波和噪声问题.但分布式也有一个…
1基础理论部分 A:“怎么按键按下去之后,结果不正常?”,B:“按键你消抖了吗?”A:“消什么抖,还要消抖?”,  B:“先检测按键变化,然后消抖过滤波动信号,最后输出稳定信号”,A:“我好像漏掉了什么.....”. 正如上述所说,小小一个按键,里面学问也是较多的.对于按键,无论您是学什么开发板或者用什么开发板或者自己开发板子,按键资源是必不可少的,可能是整个工程中算是用到比较多的,这也是人机工程交互最直接的一个例子.下图7.1是一个常用的按键. 图7.1 按键 在使用的按键中,用的最多的是机械…
1 基础理论部分 本实验主要是实现蜂鸣器的操作,蜂鸣器的操作是非常简单的,只有把简单的事情做好,方可谈其他复杂的事.本实验部分会利用verilog一些宏定义语句,其实在VGA实验部分已经出现过,这里为了巩固,再次调用相关宏定义命令,已达到最大化的可移植性,请读者务必掌握这种用法,很实用. 谈及蜂鸣器或者LED,多多少少会有一个概念,PWM(pulse  width  modulation),即脉宽调制,PWM的输出只有高电平1和低电平0,PWM不断重复输出周期T,高电平所占用的时间为t,则占空比…
TTL,CMOS以及LVTTL,LVCMOS TTL和CMOS是数字电路中两种常见的逻辑电平,LVTTL和LVCMOS是两者低电平版本.TTL是流控器件,输入电阻小,TTL电平器件速度快,驱动能力大,但功耗大.CMOS是MOS管逻辑,为压控器件,且输入电阻极大,CMOS电平器件速度慢,驱动能力不足TTL,但功耗小.正是由于CMOS器件输入阻抗很大,外界微小的干扰就有可能引起电平的翻转,所以CMOS器件上未使用的输入引脚应做上下拉处理,不能浮空. 由于TTL和CMOS电平在0或1时不一样,所以需要…
  1.1 什么是高速电路 信号的最高频率成分是取决于有效频率,而不是周期频率. 高速电路的定义是根据信号的有效频率来计算的,在现实世界中,任何信号都是由多个频率分量的正弦波叠加而成的.定义各正弦波分量的幅值为VN,则VN = 2 / (3.14 x N),可见各级谐波分量的幅值与频率成反比.现实信号,随着频率的升高,其各级谐波分量的幅值比理想方波中相同频率正弦波分量的幅值下降的更快,直到某级谐波分量.其幅值下降到理想方波中对应分量的70%(即功率下降到50%),定义该谐波分量的频率为信号的有效…
1基础理论部分 led数码管是由多个发光二极管封装在一起组合的“8”字型的器件,引线内部已经完成,如下图10.1所示,图10.2为实物图. 图10.1 数码管内部结构 那么我们想要控制数码管的亮灭,其实也就是控制发光二极管的亮灭,分别用高低电平去控制.对于数码管来说,读者若是学过单片机及其他MCU的话,其实都知道数码管的控制有两个信号是比较重要的,一个是段选信号,一个是位选信号,位选信号是针对有多个数码管时,需要控制哪一个数码管发亮,段选就是控制数码管显示什么数字. 那么在购买数码管的时候,往往…
首先在书写程序时必须有的部分,就是模块module部分,整体的架构如图8.1所示. 图8.1 程序整体架构 首先要声明模块名,在module后面加上模块名,这里最好以所建立模块要实现的功能去命名此模块,因为这样在查阅时方便去寻找此模块的功能,一目了然.紧接着在方框内要列出所有的输入和输出信号,都要在方框中写出.作为一个整体的模块,凡事出现module的部分一定要加上endmodule才算完整,这是一个完整的模块. 在输入信号中,有两个信号是一定要加上去的,就是时钟信号和复位信号,要做到对整体设计…
技巧1:“新”技能 hierarchies警告寻找 在编译之后,警告中“hierarchies”这个单词大家估计都很熟悉了,一看到这个警告,基本上就是例化时出现的问题.一般例化时,要是哪个连线没引出,没接上,或者是位宽不匹配就会出这个警告.而我们一般就会定位到例化文件,或者是观察RTL视图去寻找,但是工程一大可不是那么好找的啊! Warning: 1 hierarchies have connectivity warnings - see the Connectivity Checks repo…
1.双面板 在双层板设计layout时,最好不要不成梳状结构,因为这样构成的电路,回路面积较大,但是只要对较重要的信号加以地保护,布线完成之后将空的地方敷上地铜皮,并在多个过孔将两个地连接起来,可以弥补上述的缺点,图3.11的梳状结构的使用于低速电路,PCB信号走向单一,走线密度较低的情况. 图3.11 梳状结构 栅格型地结构,电源和地分别从PCB的顶层和底层,以正交方式引出,在电源和地交叉处放置去耦电容,电容的两端分别接电源和地. 图3.12 栅格结构 2.多层板 有完整地平面的多层板设计的优…
信号回路的电位基准点,(直流电源的负极或者零伏点)在单板上可以分为数字地和模拟地.理想的工作地是电路参考点的等电位平面,然而在实际中,工作地被认为信号电流的低阻抗回路和电源的供电回路,这样就会有三个方面的问题,共模干扰,辐射和信号串扰:        1.共模干扰 图3.8 共模干扰 如图3.8所示,所有的导体都具有一定的阻抗,电流流经地时,同样会产生压降.那么流进地的电流主要来自于两个方面:信号的回流和电源电流的回流,其中Vnoise就是电流流经工作地时产生的共模噪声电压.        2.…
2.电感.磁珠和零欧姆电阻的区别 电感:电感是储能元件,多用于电源滤波回路.LC振荡电路.中低频滤波电路等,其应用频率很少超过50MHz.对电感而言,其感抗值和频率成正比.XL = 2πfL来说明,其中XL是感抗,单位是Ω,例如一个理想的10mH电感,在10KHz时,感抗是628Ω,在100MHz时,增加到6.2MΩ,因此在100MHz时,若让一个信号通过此电感,必将会造成信号品质的下降. 磁珠:磁珠的材料是铁镁或铁镍合金,这些材料具有很高的电阻率和磁导率,在高频率和高阻抗下,电感内线圈之间的电…
1.关于去耦电容为何需要就近摆放? 大多数资料有提到过,去耦电容就近放置,是从减小回路电感的角度去谈及摆放问题,其实还有一个原则就是去耦半径的问题,如果电容离着芯片位置较远,超过去耦半径,会起不到去耦效果. 考虑去耦半径的最好办法就是考察噪声源和电容补偿电流之间的相位关系.当芯片对电流的需求发生变化时,会在电源平面的一个很小的局部区域内产生电压扰动,电容要补偿这一电流(电压),就必须感知到这一电压扰动.信号在介质中传播需要一定的时间,因此发生局部电压扰动到电容感知到需要有一定的时间延迟,因此必然…
在画电路板时,往往需要过孔来切换层之间的信号.在PCB设计时,过孔的选择有盲孔,埋孔,通孔.如图3.1所示.盲孔是在表面或者底面打通到内层面,但不打穿,埋孔是在内层面之间的孔,不在表面和底面漏出:通孔是贯穿于表面到底面.处于成本以及加工难易程度的考虑,选择通孔较多. 图3.1 过孔类型 1.低频的时候,过孔不会对信号产生影响,那么对于高频,过孔就不能简单看成是信号的连接,必须考虑信号的完整性分析.我们都知道,过孔的存在会产生寄生电容和寄生电感的影响,过孔的寄生电容会影响延长信号的上升时间,降低电…
       上一篇博客讲述了各个部分的原理图,那么根据原理图画出PCB,其实PCB是一门很大的学问,想要掌握谈何容易.就笔者在画PCB时的一些注意事项做一些说明.        1.电源部分的电源线尽量走粗,能够提供较大的电流,其实可以想象成河流,越宽的河流流过的水越多,差不多就这个道理了.走线最好从一个点出发,遍布全板.笔者电源部分一般走20~50mil: 图2.21 电源走线宽度        2.对于地和电源过孔,尽量比信号孔大一些.有条件,可以在过孔处加滤波电容,下图是笔者在电源部分和…
摘要:看我如何通过API Explorer 的SDK接口搞定千万级流量直播. 最近几个月,我的变化其实还蛮大的,从一个被实习生“无视”的“前浪”,转变成了不仅能够解决技术问题还能解决业务问题(顺手还能帮实习生解决恋爱问题)的“前辈”.前面几期故事记录了我的高光时刻,有兴趣可以点击前文查看. 公司的短视频项目上线之后一直不温不火,老板挺着急,运营部提出要在6月底组织一次千人直播带货活动,邀请1千个主播同时在短视频平台上开直播,拉用户和流量. 千人同时在线直播,短视频平台的目标访问量在百万级以上,需…
摘要: 老大说,我这份用关键词抽取API搞定的用户需求洞察报告,简直比比市场调研的科班人士做得还好. 最近这半个月的午饭,那可是相当不错,市场老大天天请吃饭,不是外面下馆子,就是从家带饺子.说是感谢我上次帮他省了20万调研费. (详情请戳:如何巧用情感分析API帮公司省下20万调研费) 今天中午他又喊我去公司对面的竹林老鸡汤,我点了一份竹笋酿豆腐,外加一份老鸡汤,他一坐下就把刚上桌的鸡汤抢了过去. 呦呵,我说这小子咋回事,还敢抢我的汤?眼看着他一言不发,拿个小勺一勺一勺地喝完了那碗鸡汤,我就知道…
对于很多研发人员来说,Java 性能调优都是很头疼的问题,为什么这么说?如今,一个简单的系统就囊括了应用程序.数据库.容器.操作系统.网络等技术,线上一旦出现性能问题,就可能要你协调多方面组件去进行优化. 另外,很多性能问题隐藏得很深,可能因为一个小小的代码,也可能因为线程池的类型选择错误...... 如何轻松搞定 Java 性能调优呢?我很认可金山软件西山居技术经理刘超的观点,他根据自己的实战经验,把 Java 性能调优分成 5 个层级:Java 编程.多线程.JVM 性能检测.设计模式.数据…
一.瞎扯框架.架构 楼主自从1998年从C语言.MASM.Foxbase开始学计算机开始接触这个行当16年以来,2001年干第一份与程序.软件.然后是各种屌的东西开始,差不多干了13年了,这13年来,用过VF\VC\VB\C#搞过N多N多的项目,记得在2002年.2003年那个疯狂并且操蛋的年代,在整天VB代码与各种SQL.各种Bug.各种需求敲打.各种吐血的需求变更.各种大半夜还坐在医院的小板凳的加班与折磨之中,慢慢的学会去思考,他妈的这是为什么,写了程序那么的折磨人,从那时开始,就接触各种软…