搜索

tag 标签: FPGA

相关帖子

版块 作者 回复/查看 最后发表
学习有礼,分享也有礼!跟着小梅哥,一起intel SoC FPGA走起! attach_img FPGA/CPLD okhxyyo 2019-5-6 29 4855 英尚微电子 2019-6-11 09:38
出 友晶 C5P FPGA开发板 和 Intel Up2 Squared Grove开发套件 淘e淘 ksboy 2019-3-26 0 808 ksboy 2019-3-26 20:26
从汇编、C语言到FPGA,总结出这“三多”一个也不能少! FPGA/CPLD okhxyyo 2019-3-6 2 642 刘123 2019-3-18 15:58
FPGA在人工智能领域里搞头大么 FPGA/CPLD tso9001 2019-3-5 2 672 传媒学子 2019-3-6 16:08
从思想到硬件描述语言 【EE_FPGA学习乐园】 wisdomzhang 2019-2-18 4 77 wisdomzhang 2019-2-19 21:18
EFINIX FPGA 视频图像学习方案-开源 attach_img 【EE_FPGA学习乐园】 wisdomzhang 2019-2-1 5 1071 wisdomzhang 2019-2-19 22:32
【FPGA开发板】入门开发板,推荐给大家参考下 FPGA/CPLD njiggih 2019-1-11 0 0 njiggih 2019-1-11 17:09
FPGA入门开发板视频教程 attach_img FPGA/CPLD njiggih 2019-1-8 0 0 njiggih 2019-1-8 11:17
悬赏 AD+FPGA+异步FIFO+CMI+SPI代码 - [悬赏 10 枚芯币] attach_img FPGA/CPLD 贰月玖 2018-12-8 3 778 chenzhufly 2018-12-10 13:48
RISC-V SoC FPGA架构为Linux带来了实时性 attach_img 【Linux与安卓】 朗锐智科 2018-12-7 1 1056 star_66666 2018-12-7 17:47
基于FPGA设计的数字时钟 毕设(视频 源码) attachment FPGA/CPLD njiggih 2018-11-23 3 692 txs1974 2018-11-23 11:20
基于FPGA的VGA显示设计项目 FPGA毕设 attachment FPGA/CPLD njiggih 2018-11-21 0 0 njiggih 2018-11-21 17:02
【分享】基于FPGA的呼吸灯设计视频教程 FPGA/CPLD njiggih 2018-11-20 0 0 njiggih 2018-11-20 15:59
基于fpga的信号发生器和DA转换 attachment FPGA/CPLD njiggih 2018-11-19 0 0 njiggih 2018-11-19 16:21
基于fpga的FIR滤波器设计(附上源码代码下载) attachment FPGA/CPLD njiggih 2018-11-16 2 656 njiggih 2018-11-19 11:11
【分享】FPGA通俗易懂的入门教材。规范设计,少走弯路 attachment FPGA/CPLD njiggih 2018-11-15 15 1534 zhuyebb 2019-9-13 12:58
基于FPGA的插值滤波器设计 attachment FPGA/CPLD njiggih 2018-11-14 0 606 njiggih 2018-11-14 16:04
基于FPGA的AD/DA采集(附件源码代码) attachment FPGA/CPLD njiggih 2018-11-13 0 707 njiggih 2018-11-13 17:26
明德扬至简设计法原理与应用--1.1FPGA简介 信息发布 njiggih 2018-11-12 2 599 njiggih 2018-11-13 17:09
明德扬至简设计法--verilog的综合器和仿真器 attach_img FPGA/CPLD njiggih 2018-10-8 0 0 njiggih 2018-10-8 15:40

相关日志

分享 高云半导体将于9月17号参加FPGA全球大会
qq400336518 2019-9-6 15:39
高云半导体将于9月17号参加FPGA全球大会
中国广州,2019年9月6日,全球发展速度最快、最具创新性的FPGA设计公司-广东高云半导体科技股份有限公司(以下简称“高云半导体”)将参加9月17日在斯德哥尔摩举行FPGA全球大会,此会议是全球最大规模的FPGA行业年度盛会,今年的会议将在AF,Frosundalen 2A,169 70 Solna举行,观众可通过 https://ww pgaworld.com/ 免费注册登记。 “作为唯一一家参加此次大会的中国公司,我们非常高兴能够与Xilinx,英特尔,Mentor以及其他各行业领先企业共同参加欧洲最负盛名的FPGA大会,”高云半导体欧洲销售总监兼总经理Mike Furnival说道,“在最近这段时间,高云半导体凭借当前成本最低的中低密度FPGA器件以及近期陆续发布的针对物联网,安全和Edge AI的高度创新解决方案,使得客户和合作伙伴都对我们在FPGA市场领域取得的进展印象深刻。 本次大会为我们展示这些解决方案提供了另一个绝佳机会。” 关于高云半导体: 广东高云半导体科技股份有限公司于2014年1月成立,公司致力于开发国产FPGA解决方案并推动其产业化,旨在推出具有核心自主知识产权的民族品牌FPGA芯片。 公司以为用户提供最高品质的服务为宗旨,可提供包含芯片、设计软件、软核、参考设计、演示板等一站式服务。
0 个评论
分享 明德扬至简设计法--verilog综合器和仿真器
njiggih 2018-10-10 15:37
Verilg是硬件描述语言,顾名思义,就是用代码的形式描述硬件的功能。而我们最终是要在电路上实现该功能的。当Verilog描述出硬件功能后,我们需要综合器对Verilog代码进行解释,将代码转化成实际的电路来表示,最终实际的电路,我们称之为网表。这种将Verilog代码转成网表的工具,就是综合器。上图左上角是一份verilog代码,该代码描述了一个加法器功能。该代码经过综合器解释后,转化成一个加法器电路。QUARTUS、ISE和VIVADO都是综合器,集成电路常用的综合器是DC。 我们在FPGA设计的过程中,不可避免会出现各种BUG。如果我们编写好代码,综合成电路,烧写到FPGA后,才看到问题,此时去定位问题就会非常地困难了。在综合前,我们可以在电脑里对代码进行仿真测试一下,把BUG找出来解决,最后才烧写进FPGA。我们可以认为,没有经过仿真验证的代码,一定是存在BUG的。 为了模拟真实的情况,我们需要编写测试文件。该文件也是用verilog编写的,描述了仿真对象的输入激励情况。该激励力求模仿最真实的情况,产生最将近的激励信号,将该信号的波形输入给仿真对象,查看仿真对象的输出是否与预期一致。 为了做仿真验证,我们编写了测试文件。将测试文件和被测试对象加入到仿真器中。仿真器对测试文件和被测试对象的代码进行解释。根据测试文件,产生测试激励,输入给被测试对象;根据补测试对象的代码,产生被测试对象的输出。需要注意的是,在仿真过程中,没有将代码转成电路,仿真器只是对代码进行仿真验证。至于该电路是否可转成电路,仿真器是不关心的。 常用的仿真器是MODELSIM和VCS等。 由此可见,verilog的代码不仅可以描述电路,还可以用于测试。事实上,Verilog定义的语法非常之多,但绝大部分都是为了仿真测试来使用的。只有少部分才是用于电路设计,详细可以参考本书的“可综合逻辑设计”一节。 Verilog中用于设计的语法,才是学习的重点。掌握好设计的语法,熟练应用于各种复杂的项目,这是技能的核心。其他测试用的语法,需要时查找和参考就已经足够了。 本书着重点,是用于本科、研究生的教学用途,因此将重点讲解设计用的语法。 在本章讲解Verilg时,将从综合器和仿真器角度,解释语法的用途,读者可以明白要学习的关键内容。
个人分类: 明德扬-至简设计法|296 次阅读|0 个评论
分享 FPGA反推法应用实例——检查代码
goodbey155 2018-9-7 16:30
对于 IT 相关从业人员 来说 ,看别人代码是必不可少的磨难。 在学习阶段, 我们经常需要从书上 看 别人的代码以吸取宝贵经验,这是相当枯燥 无趣 的过程,也时常无法领会作者的意图。 在实际工作中,不可避免的出现需要接手做到一半的项目或是团队合作的项目,这时候就必须看以前的工程师的代码。如果说看书上的代码用痛苦来形容的话,那么这种情况时遇到 代码不够规范或者设计不合理,简直 就是苦不堪言。还有一些神一般的选手, 设计者在编写代码时的 “灵机一动”, 其结果只有他自己和上帝才看得懂。这些代码能看得你觉得生不如死,甚至开始怀疑人生:到底是代码写得混乱 or我水平不行?!你以为这是最痛苦的吗?NO!还有一种情况足以令你看得生不如死,甚至开始怀疑人生。那就是 遇到运行不正常的代码,对问题排查错误花的时间和精力还不如重新写一遍,这时你的内心完全是崩溃的! 有一件事非常无奈,我们不可能要求别人的代码都非常规范。所以,正确的学习方法和思维方式尤为重要。怎样看他人代码才是正确的方式?看代码之前应该做些什么准备工作?看代码用正向思维还是逆向思维?如何判断代码中哪些地方是否值得借鉴?由此,掌握到一种通用的去看懂别人代码的技巧显得非常重要。下面我们就来谈谈这方面。 我们知道,实现功能可能有很多种方法,所以不同的人写出的代码不相同。通过看代码去知道它要实现的是什么功能是一件很困难的事情。 有些初学者会想到采取仿真一下 、看电路图、流程图、时序图、注释等等方法,都是不可取的,通过这些你还是无法知道它的功能,以及有没有错误。 那么正确的方法是什么呢?我们采取一种可称之为 “反推法”或是“逆向法”的方式,这个问题就迎刃而解了。要知道,代码的目的是实现功能。无论你用那种代码,有一点完全相同的就是“实现功能”这个最终结果。了解到这一点,我们就可以通过结果(功能)去反推过程(代码),代码的思路、流程、用途就抽丝剥茧清晰的显露出来。好的,下面我们举个实例来说明怎么通过反推法有步骤的去看懂别人的代码。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 //------------------------------------------- //帧率采样计算 reg fps_state; reg fps_data; always@(posedge iCLK or negedge iRST_N) begin if(!iRST_N) begin fps_data = 0; fps_state = 0; CMOS_FPS_DATA = 0; end else if(Frame_valid) begin case(fps_state) 0: begin CMOS_FPS_DATA = CMOS_FPS_DATA; if(delay_2s == 0) begin fps_state = 0; if(CMOS_VSYNC_over == 1'b1) //VS上升沿,1帧写入完毕 fps_data = fps_data + 1'b1; end else fps_state = 1; end 1: begin fps_state = 0; fps_data = 0; CMOS_FPS_DATA = fps_data 1; end endcase end else begin fps_data = 0; fps_state = 0; CMOS_FPS_DATA = 0; end end endmodule 如果我们按照自上而下的顺序去看这个代码,通过代码的过程去看实现的功能会是很困难的事,甚至看不明白它要实现的是什么功能。 O k,我们现在从功能看起,这个代码要实现的是“帧率采样计算”这个功能,可以理解为图片每秒显示多少帧数。 1. 从代码中我们可以看出, CMOS_FPS_DATA 这个信号是我们所要求的信号(一秒内的帧数率); 2. CMOS_FPS_DATA = fps_data 1在一段时间内保持不变,才是我们所要的结果; 3. 从 CMOS_FPS_DATA = fps_data 1中可以看出,CMOS_FPS_DATA是通过fps_data 这个信号来实现 ; 4. fps_data这个信号是怎么来的? 反推到 fps_data = 0和fps_data = fps_data + 1'b1这两个信号。fps_data复位为零,在else if(Frame_valid ) 条件下加 1;因此 fps_data为帧数率标志信号; 5. 从 CMOS_FPS_DATA = fps_data 1中可以看出是通过= fps_data 1右移一位,也就是说除以 2得到这个值的; 6. 为什么要 fps_data 除以 2来得到这个值? 于是反推到 if(delay_2s == 0 ) 这个条件。 现在作者的意图就非常清晰了。满足帧数率的情况下不断 +1,到2秒时间时根据统计结果除以2,由此得到1秒时间的帧数。到此为止,我们已经可以非常容易的看懂这个代码了。 通过反推法我们也能比较容易的去看代码是否有错误。首先我们去知道代码需要实现的功能,通过反推法得知是通过什么方法实现的,进而仿真时定位其目标,去看该代码是否完成了功能。如果没有完成功能,那么代码就有误。 对于学习者来说,反推法的意义还不仅在此。在本例中,这个设计思路完全满足功能要求。展这时,我们应该扩思考,本例是通过 2秒来实现功能,为什么要用2秒?是否可以直接通过1秒,或是3秒,或是其他方案来实现呢?各种方法的优缺点在哪里?通过反推法得知作者实现项目的方法并思考,这种方法正确还是错误?如果是错误或者这种方法不太好,那么我们如何避免?如果是优秀的代码,我们如何借鉴并能举一反三地运用到其他项目中去?本例只是选取项目中的一个小的节点,对于看整个项目的代码来说可以运用反推法吗?敬请关注下一节。 想要了解更多技术文章,欢迎关注http:// www.mdy-edu.com/product/list/35
个人分类: 原创|44 次阅读|0 个评论
分享 基于FPGA的Ethercat定制栈最大可实现32轴
njiggih 2018-8-30 15:06
基于FPGA的Ethercat定制栈最大可实现32轴
基于 FPGA的Ethercat主栈协议 ( 最大可带 32轴同步运行,同步抖动±75ns,控制精度125us ) 各位老板: 我司有多年的 FPGA研发经验; 基于 FPGA的Ethercat定制栈更是达到行业领先水平 感谢抽空阅读,欢迎合作 市场痛点 【 PLC厂家的痛点】 目前,国内的大多数 PLC厂家主要通过增加运控模块来实现轴的运动控制,可控制的轴数比较少(通常是4-6轴),并且模块的价格高昂(一个模块几万)。如果要控制多轴成本就更高,而且控制精度不高,轴与轴之间的精度很大,这意味着不能进入高精尖控制领域。 【应用领域的痛点】 在传统的机加工行业,普通的机床多采用脉冲控制,可以控制的轴数少( 4-8轴)。随着产业化升级,常规的控制方案面对需要高精度高速度的产业,以及多设备协同工作的工况,性能越来越捉襟见肘。 现有客户一般都采用传统的总线方案,传统的控制总线具有易干扰、低带宽、硬件接线复杂以及无法快速错误定位等缺点。 常规多轴运控系统,一般都采用多块 PCI接口运控卡级联扩展的方式,解决多轴运行的问题,但是这将大大增加您的使用成本。如果一款板卡只支持4个轴,而您的系统恰好需要5个轴来控制的话,您将不得不购买两张运控卡;而且随着越来越多的轴扩展,现场的走线将变得越来越杂乱,同时您的工业PC也必须具有足够多的PCI接口供您的系统来使用。 解决方案 EtherCAT技术的出现,解决了传统控制行业上的短板。由于采用了网线通讯使得可控制的伺服驱动器数量剧增(最多可多达65535台),在增加伺服驱动器个数的同时,利用EtherCAT专门协议还可同时保证数据的实时性传送(同步误差为微妙级),这在多轴协同工作的场合尤为重要。 【 领先的 EtherCAT技术解决方案 】 目前针对工业领域的实际应用场合,开发了 PLC功能升级的技术解决方案: 1、该方案是基于Xilinx的EtherCAT定制协议栈; 2、最大可带32轴同步运行,同步抖动±75ns,控制精度125us,远高于国内同款协议栈性能; 3、同时最大可支持1024点的IO设备; 4、可根据客户的实际需求,定制2款伺服驱动器和一款IO设备(DO/DI)。 【 性能指标 】 可同时最大控制 32轴,控制精度如下:8轴125us,16轴是250us,32轴是500us。目前测试运控卡,20亿包数据无丢失。 测试了 500us, 250us, 125us, 抖动±75ns 【 功能升级方式 】 客户完全不需要了解什么是 EtherCAT,只需要配合健飞按如下简单步骤进行升级: 在现有产品基础上,客户仅仅是在原有的电路板上增加一个 FPGA芯片,然后使用CPU或者ARM甚至是单片机,像操作DRAM一样简单的读写, 即可完成不同总线接口转 EtherCAT接口。 将根据客户自己做的硬件板子,定制烧录的程序并且提供给客户,客户使用这个烧录程序就可以进行功能升级,只需要几天时间就可以完成了。 【 硬件的制作要求 】 要求硬件芯片采用 XILINX SPARTAN6 LX45(T)/LX75(T)芯片,与PLC控制器之间的接口,支持并口(DSP为EMIF、ARM为GPMC、单片机为FSMC)或者PCIE接口。 【 调试 】 提供简单易用的寄存器和时序手册,客户按该文档进行编写软件程序,并且健飞将会提供 技术支持,协助客户进行调试。 【 兼容性 】 目前与三洋、松下、高创、士林等品牌伺服器有连接测试过,性能稳定。 【 EtherCAT控制系统框图示例 】 【 读时序 】 【 写时序 】 【 信号说明 】 信号名称 方向 位宽 说明 CLK_60M O 1bit 由FPGA的发出的60M时钟信号,接收方在该时钟信号的 上升沿采集控制信号数据 AMS_N O 1bit 片选信号,低电平有效 ADDR18-0 O 19bit 地址信号 AOE_N O 1bit 输出使能信号,低电平有效 ARE_N O 1bit 读使能信号,低电平有效 AWE_N O 1bit 写使能信号,低电平有效 DATA IO 16bit 双向数据信号,写时为输出,读时为输入 【 实际波形图 】 (图一) DC时钟和中断信号 蓝色为 DC时钟周期125us,黄色为pdo 中断信号。 (图二) pdo中断抖动 放大后测试的 PDO中断信号抖动为±75ns 【 方案优势 】 1、方案是在CPS模式下8轴跑FOLLOW,同步周期125us,DC抖动为±75ns,其性能已达到国际知名商用协议栈水平,目前在国内只有少数几家拥有此技术。 2、升级方式具有简单、易用、快速的特点。 3、一次性付费,无限次使用。 4、投入少,可快速获取高回报。 【 方案价值 】 让您实现同时控制轴数多达 32轴,并且提高了精确度和稳定性。 大幅降低了您的开发成本和时间成本,让您省时省心更省钱。 让您可以自行生产高端的板卡和 PLC产品去拓展市场。 让您不再为高精尖的项目犯愁了,公司形象随之高大上起来。 成功案例 PLC功能升级的技术解决方案,一经推出倍受运动控制PLC厂商的青睐。目前已成功为多家深圳企业提供了“量身定制”的解决方案,受到客户一致认可与好评。鉴于公司已跟这些合作成功的客户签定了保密协议,因此不便透露其企业名称及具体细节,希望理解! 【 深圳某苹果电池生产厂家的案例 】 项目背景: 因为产业化升级,苹果要求所有的电池供应厂商必须把原有的传统电池切割产线更新换代为 EtherCAT总线通讯。该客户看了市面上好几款国内外的运动控制器,国内的EtherCAT运动控制器普遍兼容性差,同步抖动高。国外的运动控制器性能好,但价格高昂。 解决方案: 该厂家生产电池多年,对电池的加工公艺十分了解,于是他们想保留原有的加工工艺算法,只想把传统的脉冲式运控卡更换为 EtherCAT接口方式。客户有一套自己的加工流程和加工算法,考虑到实际的通讯工况,于是在原有的控制电路板上添加了一款FPGA当作EtherCAT主站协议栈网卡,删除掉原有的脉冲电路模块。仅仅花了1周的时间,就把原有的控制方式更改为EtherCAT接口。6个月的压力测试,千亿包数据无丢失。 合作方式 大致的合作流程如下: 1.合作双方达成合作意向; 2.合作双方商定技术细节,如硬件接口、性能参数、伺服器型号等; 3.合作双方签订合作合同; 4.贵方制作硬件,我方设计程序; 5.我方烧录多块电路板供甲方进行测试; 6.贵方进行一个月的压力测试; 7.完成测试并确认没问题后,我方提供烧录程序; 8.完成合作。 【合作联系】 QQ : 1465177751 微信: 18026329316
个人分类: ECAT|37 次阅读|0 个评论
分享 FPGA ISE PROMs下载程序问题
dp_calling 2018-3-9 08:26
问题: iMPACT边界扫描出一个unknown device。 ERROR:iMPACT - Bsdl reader is not available for device 2 . 问题描述: 应用ISE 给FPGA的外界PROMS下载过程中,通过iMPACT边界扫描设备。结果扫描结果是一个FPGA( xc6slx9 )和一个unknown device(说明:硬件资源:FPGA,是 Xilinx 的xc6slx9);PROMs,这里用的是Xilinx的xcf04s)。按理说,这个unknown device就是 xcf04s 。但是 iMPACT 没有识别出它。 原因: 缺少 xcf04s.bsd文件 解决办法: 是给这个扫描到的unknown device添加bsdl文件,及就是 xcf04s.bsd文件 。添加方式是双击unknown device,然后选择xcf04s.bsl添加。然后分别给各个设备添加相应的bit文件和isc文件。之后进行programming,即可将程序下载至proms中, 注意:下载的 xcf04s.bsl 文件通过 iMPACT 是不能接受.msc文件的,此时一定一定要将.bit文件转化成.isc文件方可被接受。 xcf04s.bsl 的下载链接: http://www.bsdl.info/list.htm?search=xcf04S ISE 的报错报告: console output: GUI --- Auto connect to cable... INFO:iMPACT - Digilent Plugin: Plugin Version: 2 .5.2 INFO:iMPACT - Digilent Plugin: no JTAG device was found. AutoDetecting cable. Please wait. *** WARNING ***: When port is set to auto detect mode, cable speed is set to default 6 MHz regardless of explicit arguments supplied for setting the baud rates PROGRESS_START - Starting Operation. Connecting to cable (Usb Port - USB21). Checking cable driver. File version of /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/xusbdfwu.hex = 1030. File version of /usr/share/xusbdfwu.hex = 1030. Using libusb. Kernel release = 2 .6.32-358.el6.x86_64. Max current requested during enumeration is 300 mA. Type = 0x0005. Cable Type = 3, Revision = 0. Setting cable speed to 6 MHz. Cable connection established. Firmware version = 2401. File version of /opt/Xilinx/14.7/ISE_DS/ISE/data/xusb_xp2.hex = 2401. Firmware hex file version = 2401. PLD file version = 200Dh. PLD version = 200Dh. PROGRESS_END - End Operation. Elapsed time = 2 sec. Type = 0x0005. ESN option: 0000150F637001. Attempting to identify devices in the boundary-scan chain configuration... INFO:iMPACT - Current time: 1/12/18 7:06 PM PROGRESS_START - Starting Operation. Identifying chain contents...INFO:iMPACT:1588 - '0':The part does not appear to be Xilinx Part. '0': : Manufacturer's ID =Unknown , Version : 13 INFO:iMPACT:501 - '1': Added Device UNKNOWN successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- '1': : Manufacturer's ID = Xilinx xc6slx9, Version : 2 INFO:iMPACT:1777 - Reading /opt/Xilinx/14.7/ISE_DS/ISE/spartan6/data/xc6slx9.bsd... INFO:iMPACT:501 - '1': Added Device xc6slx9 successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- done. ERROR:iMPACT - Bsdl reader is not available for device 2 . PROGRESS_END - End Operation. Elapsed time = 0 sec. INFO:iMPACT:1777 - Reading /home/ise/Test/unknown_1_8.bsd... INFO:iMPACT:1777 - Reading /home/ise/Test/unknown_1_8.bsd... INFO:iMPACT - The UNKNOWN device BSDL file(s) are saved to this location: '/home/ise/Test/'
个人分类: FPGA|1124 次阅读|0 个评论
分享 明德扬公开课-FPGA原码补码运算_fpga学习
njiggih 2018-1-4 17:45
全网公开课《FPGA原码补码运算》录播视频链接:http://www.mdy-edu.com/product/629.html (ps:培训班大部分是学习设计技巧,如给定功能,如何进行设计等。这才是FPGA工程师的核心能力!!QQ:854618250 )
24 次阅读|0 个评论
分享 公开课主题:FPGA中原码、补码和小数的运算
njiggih 2017-12-26 14:48
本次公开课主题:FPGA中原码、补码和小数的运算 公开课时间:2017年12月30日,星期六20:00 参加方式: 加入QQ群97925396, 有兴趣的朋友可以加群参加! 考完之后有一段很长的空窗期,没事干嘛去? 为何不趁着这个时间学门技术呢 也可以做两手准备哦 免费试听FPGA课程,更有长期公开课。 想学习的你和我联系预约就可以免费听课了。 q8546-18250
341 次阅读|0 个评论
分享 算法的verilog实现-FIR滤波器的设计实现
njiggih 2017-12-21 14:51
上周星期天(12月17日)全网公开课《算法的verilog实现-FIR滤波器的设计实现》 (ps:培训班大部分是学习设计技巧,如给定功能,如何进行设计等。这才是FPGA工程师的核心能力!!QQ:8546,18250 ) http://www.mdy-edu.com/product/609.html
292 次阅读|0 个评论
分享 FPGA至简设计法为什么这么简单
njiggih 2017-12-18 16:25
由潘文明先生开创的IC/FPGA至简设计法,具备划时代的意义。这种设计方法不仅将IC/FPGA学习难度降到了最低,同时将设计过程变得简单,并规范了代码避免了混乱,将出错几率降到最低。下面我们来看看是如何实现的吧。 一、 知识点集中化。(实例实证28原则) 二、 填空式的设计过程。 通常,我们通过敲代码实现程序功能类似于记流水账,一行一行一页一页的向下写。在这个过程中,难免遇到设计无思路、代码冗长重复、逻辑关系不明确、代码之间出现冲突等等现象。 明德扬至简设计法,提取大量的实际项目,采用科学的手段统计分析,找出其内在通用性部分,并建立相关的体系,实现了“填空式”设计!首先,把复杂的代码划分成几种类型的模块,然后以统一规范的代码格式,通过相应的脚本语言建立可调用的通用模板。不仅如此,通过模板生成的代码可参数化定制,一旦生成无需修改。下面我们先以非常常用的计数器模板为例演示一下。 我们知道,计数器是FPGA实现时序的基本单元,时钟分频要计数,串并转换要计数,乒乓操作要计数。明德扬即建立了下面这么一个模板: 当工程师需要用到计数器时,只需要打开GVIM,在命令模式下输入 :Mdyjsq回车,便出现了这么一个计数器的标准模板。 接下来设计师所需要做的,仅是在( )里填上内容,计数器设计便完成了。 该模板还设有自动命名功能,第一次输入:Mdyjsq默认名为cnt0,第二次则为cnt1,第三次为cnt2,依此类推。如果原代码中已经有cnt0,则会自动从cnt1开始。从而完全避免了命名重复产生冲突的现象。 如此卓越的设计方法,当然也支持个性化命名服务。比如你想将计数器的名称设置为time_cnt,只需要在命令模式下输入:call MDYJSQ(“time_cnt”) 回车。生成的模板如下: 学过至简设计法的同学都知道,计数器主要是想好“加1条件”和“数多少个”。我们在调用模板时,可以直接赋上条件,这样代码就完成生成了。如输入命令 :call MDYJSQ(“time_cnt”,”flag_add”,10)回车,模板如下: 使用至简设计法,即可省略掉常规设计中的繁复思考过程。比如计数器的设计,只需要填入设置条件“什么情况下加一”和“数多少下”。 在调用模板时,直接赋上条件,这样代码就完成生成了。如输入命令 :call MDYJSQ(“time_cnt”,”flag_add”,10)回车,即形成如下模板: 三、 四段式状态机。 复杂的时序操作均需用到状态机与计数器配合实现。目前通用的做法式采用三段式状态机。(缺陷)而至简设计法使用的是四段式状态机,(四段状态机是哪四段)。采用该状态机,不仅让设计变得更加简单,程序运行也非常稳健,出错几率大大降低。 例如设计一个状态机,其状态转移图如下图所示: 在明德扬至简设计法中直接使用模板,在命令模式下输入命令 :callMDYZTJ(3,”IDLE”,”S1”,”S2”,12,23,31)回车,即得到如下图的结果: (结果解释。)
271 次阅读|0 个评论
分享 FPGA-全网公开课-第01期录播-《如何读懂别人的代码》
njiggih 2017-12-6 15:38
FPGA-全网公开课-第01期录播-《如何读懂别人的代码》
?ω? ?ω? ?ω?福利来啦! 明德扬公开课视频,如何读懂他人的代码 http://www.mdy-edu.com/product/586.html. 如想目前您正解决技术项目问题,随时call我(q854618250),希望能帮到您
39 次阅读|0 个评论
分享 100G波分复用(WDM)宽带传输设备
ewave381 2017-12-5 10:49
100G波分复用(WDM)宽带传输设备
eWAVE 5101 100G 波分复用( WDM)宽带传输设备 eWAVE5101 40G/100G 传输设备是为满足大容量和长距离数据传输而开发的一款小型化且高性价比的设备。它支持包括 100GBASE-LR4 、 100GBASE-ER4 和 100GBASE-SR10 的各种 100G 用户接口,能与任何第三方 100G 设备无缝连接。它也能支持包括 40GBASE-LR4 、 40GBASE-LR4 的各种 40G 用户接口,进行 40G 信号传输。它支持双纤和单纤双向工作方式,还配有可插拔的 SMC 网管子卡作为外接网管的备份(带 LCD 显示)。 eWAVE5101 中的光接口均采用标准的光模块可插拔方式,这是基于当前 100G 传输设备的开发理念:面对不断变化中的 100G 业务需求,尽可能低成本为用户提供各种可选择传输模式。 eWAVE5101 的设计充分考虑了用户的低功耗和节省占地空间等需求,从而达到整体上节省设备资本支出以及降低运营维护费用的目的。 理想应用环境 : -最远相距 80km 无中继站的大容量传输 -作为不同模式 40G/100G 光接口间的转换器 -作为 40G/100G 光网络的客户侧设备 -在现有网络上升级提供 40G/100G 传输业务 特点 : -目前市场上最高集成度的 100G 产品 . - 支持各种 100GBASE-x 用户接口 - 支持各种 40GBASE-x 用户接口 - 符合 ITU-TG.709 100G 标准 - 用户接口 : CFP LR-4 WDM 4 x 28Gb/s OTU4 - 3 个通用插槽可用于: EDFA 子卡、 DCM 子卡、 OLP 保护子卡或无源 WDM/OAD 子卡 - 1 个支持 GUI 接口的 SMC 网管子卡(带 LCD 显示) -线路侧传输距离 : 点对点无中继 80km, 有中继站可达 1000km 以上 应用案例
0 个评论
分享 某位同学FPGA培训100天的感受
njiggih 2017-12-1 10:15
我从开始在明德扬学fpga到现在粗略算来的话,已经有3个月了,就目前而言,我并不确定自己算不算高手们所说的入门了,fpga来分享一下学习总结。但是不管现在的水平如何,现在就总结一下学习感受吧,希望能帮到更多的学生。 1.掌握fpga的编程语言 在学习一门技术之前我们往往从它的编程语言开始,如同学习单片机一样,我们从c语言开始入门,当掌握了c语言之后,开发单片机应用程序也就不是什么难事了。学习fpga也是如此,fpga的编程语言有两种:vhdl和verilog,这两种语言都适合用于fpga的编程。 2.fpga实验尤为重要除了学习编程语言以外,更重要的是实践。 将自己设计的程序能够在真正的fpga里运行起来,这时我们有配套明德扬开发板进行实验,我们选择使用一些项目进行试验。从中掌握一些项目操作实践。 3.学FPGA设计,首先是逻辑电路一定要正确 你能熟练地拿它来实现任何可以实现的逻辑电路,这就是一个好。这里面包括熟悉芯片的结构,里面每部分功能块的使用。熟悉开发环境,里面的功能,熟悉第三方提供的IP核。能把FPGA的性能发挥到极致,利用约束提高设计的性能等等。比如明德扬公司不仅仅教你如何上板,如何写代码,主要一定要掌握好设计思路正确,一个好的思路,往往功能实现时简单,可靠,移植性好,反之,感觉电路繁杂,思路不清的,就要回头审视一下自己的思路。设计思路的提高需要积累,多看看别人的设计,尤其是功能电路的设计,比较一下自己的设计,总结一下经验教训,看得多了,手段也就多了,另外多从系统的角度看看你的设计,做起项目来,不容易出差错,项目做的也比较顺利。 总之,通过三个月的培训学习,由衷感谢潘老师的辛勤付出,我从完全技术小白变成了能够独立开发项目能力。非常感谢明德扬的教程和团队。 对于那些后来的学弟,我只想说,学东西如果能有人带你少走弯路,付出点金钱是很值得,不要总是想免费的午餐。只有支持收费项目,这些教程才能越来越好。 FPGA网络班,找我q854618250!
283 次阅读|0 个评论
分享 【阿东之Xilinx FPGA 摄像头调试随记】
dongdong100 2017-11-28 23:07
我们的Xilinx S6M开发板是SPARTAN 6 LX9的片子,因为我们的摄像头程序都是ALTERA的QUARTUS的工程,该工程里面需要用到两个和厂家相关的特性,PLL和FIFO,XILINX和ALTERA两家对于PLL和FIFO的管脚和复位等都不一致,器件的管脚约束和时序约束也不一样,因此移植的工作量还是比较大的。如果没有对两家特性有仔细的研究,还是会遇到很多坑的。 像我阿东这样的大拿(不谦虚一下),在移植的时候,也遇到了很多坑,首先第一个就是PLL,PLL带有复位管脚,复位管脚PLL的手册上没有说是高复位还是低复位,虽然我之前经常使用XILINX的各种FPGA,不过还是没有记住,然后测试了下,发现复位管脚高是复位的,低是解复位。另外ALTERA的PLL和XILINX的PLL,可能倍频性能也不一致,当然这次没有遇到。 其次遇到的是FIFO,FIFO差异就更大了,包括复位和各个管脚都不一样,但是基本功能都是差不多的,经过测试,也发现FIFO复位高表示复位。然后是生成FIFO,XILINX的生成需要使用ISE的CORGEN工具,这个生成需要保持和ALTERA一样的FIFO特性,比如都是异步FIFO,延迟都是一拍,都需要FIFO带有datacnt(表示当前FIFO里面存储的数据个数)计数。期间因为不确定这个FIFO的 datacnt 是否可以使用,一度自己生成了一个 datacnt,不过还是没有好,最后改回去发现,Xilinx的异步FIFO的 datacnt 是可以用的。 再次遇到的是各种编译问题,首先是时钟编译报错,好好的东西在QUARTUS里面也没有报错啊,经过各种分析发现,XILINX的时钟处理很麻烦,时钟不能直接输出到IO,需要加ODDR,然后才能接到IO中,这个ODDR我是添加了,但是一直没有清晰的图像,很是纳闷,最后发现居然是ODDR时钟接错了,ODDR需要方法如下: ODDR2 #( .DDR_ALIGNMENT("NONE"), // Sets output alignment to "NONE", "C0" or "C1" .INIT(1'b0), // Sets initial state of the Q output to 1'b0 or 1'b1 .SRTYPE("SYNC") // Specifies "SYNC" or "ASYNC" set/reset ) U_ODDR2_0 ( .Q (sdram_clk), // 1-bit DDR output data .C0( sdram_clk_tmp ), // 1-bit clock input .C1(~ sdram_clk_tmp ), // 1-bit clock input .CE(1'b1), // 1-bit clock enable input .D0(1'b1), // 1-bit data input (associated with C0) .D1(1'b0), // 1-bit data input (associated with C1) .R(1'b0), // 1-bit reset input .S(1'b0) // 1-bit set input ); 但是我写错成如下方式: ODDR2 #( .DDR_ALIGNMENT("NONE"), // Sets output alignment to "NONE", "C0" or "C1" .INIT(1'b0), // Sets initial state of the Q output to 1'b0 or 1'b1 .SRTYPE("SYNC") // Specifies "SYNC" or "ASYNC" set/reset ) U_ODDR2_0 ( .Q (sdram_clk), // 1-bit DDR output data .C0( sdram_clk_tmp2 ), // 1-bit clock input .C1(~ sdram_clk_tmp ), // 1-bit clock input .CE(1'b1), // 1-bit clock enable input .D0(1'b1), // 1-bit data input (associated with C0) .D1(1'b0), // 1-bit data input (associated with C1) .R(1'b0), // 1-bit reset input .S(1'b0) // 1-bit set input ); 导致SDRAM时钟异常,所以图像异常不清楚。还好发现了。 最开始调试时候的波形一直如下所示: 后来改了ODDR时钟后,图像恢复正常,坑爹! 然后是时序约束了,别问我不加行不,不加不行,摄像头的频率还是很高的,不加会导致图像显示异常甚至不显示,时序约束和QUARTUS的也不一致,不过转换相对简单,看懂了就知道怎么改了。 系统时钟约束如下: Net clk_50 LOC = T8 | TNM_NET = sys_clk_pin; TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 50000 kHz; 经过上面的几个大坑,最终OV7670/7725的视频正常清晰显示了,唯一安慰的是发现XILINX的板子的图像比ALTERA的要清晰一点点,可能是和XILINX的时序优化相关。
个人分类: FPGA|324 次阅读|0 个评论
分享 【转】明德扬FPGA-全网公开课-第01期-《如何读懂别人的代码》
njiggih 2017-11-28 14:51
本次公开课主题: 无论是学习还是工作中,难免都要阅读他人的代码。但这一过程许多人都感觉非常痛苦:不明白作者的意图,不明白为什么要有这个信号,这个信号有什么用,作者到底是如何想到这个信号的。理解代码都非常困难,更别说是定位问题,修改错误了。 其实阅读他人代码不痛苦,关键是用正确的思维方式和阅读方法。 本期公开课,潘老师将教授大家如何高效地阅读他人代码,快速实现学习和完成项目的目的。 公开课时间:2017年12月2日,20:00 参加方式: 加入公开课群291447470,即可报名参加(明德扬将长期举行全网的公开课,欢迎所有FPGA爱好者参加和讨论。加入本公开课,就是长期参加公开课) 本次课程已经在培训班上过,下面是来自学员的评价,供参考。 二飞 这样的公开课的形式突出解决现实研发过程中实实在在存在的问题,很实用,无论对于学生还是参加工作的来说都带来实实在在的好处,真的很不错,很看好明德扬的发展模式,真心希望明德扬能够广收学员,为国家的FPGA科技水平培养更多的实用型人才,加油! 6天前 半夏.Season2 对阅读别人的代码有了正确的思路,今后会按照此思路来阅读他人代码。建议:希望直播的时候网络状况能好一些,常常出现的卡屏情况,老师可以查看下是否因为电脑用的是无线网(无线网不稳定)造成的,可尝试用有线网,这样能尽可能的避免网络延迟及网络不稳定的状况 steven 1、以具体实例为切入点,和学生们进行问答反馈,发散学生们的思维,注重代码完成的过程,同时还能了解到其他同学们是怎么想的。 2、4:目前在进行基础知识的学习,还未碰到具体的项目案例,暂时没有什么好的建议。 3、让我了解到如何根据别人的代码,通过芯片手册,产品需求及周围可利用的资源去追溯模块的功能,理解代码功能,完善优化代码。 禾苗 1. 此次公开课讲得比较好的地 RE:少我们不要去猜代码作者的意图,直接从输出倒推更有效率 2. 此次公开课的改善建议 RE:可以顺便布置作业要求用明德杨规范写实现一样功能的代码 3. 此次公开课对你的帮助情况 RE:能少走不少弯路 4. 对明德扬的建议 1周前 收起 王福 昨天上课时出现了卡屏的问题,今天又下下来看了一遍。本次课程利用别人代码与实际项目讲述了如何阅读别人代码的问题。对于实际代码要先知道具体功能,再看代码是如何实现的;而对于具体的项目要从后面模块信号开始,从后面往前推。这对于项目经验少、即将参加工作的我们确实很重要。建议以后在上课之前将下一次上课要用到的代码等资料提前上传到群里。 5天前 收起 woozywooyi/wu:ziwuyi/ 1.讲解清晰、明了、互动、新颖,以项目例程实践性、引导性地指出:要带着项目、工程的实现思路或功能有目的地去阅读,逆向逐级推到、层层关联明白各语句块的功能,切忌盲目从头到尾阅读代码; 2.暂无改善建议; 3.增加了自己阅读他人代码的技能与经验,提高了自己阅读效率; 4.感谢潘老师及明德扬全体本着以学员为中心,积极负责、不辞辛劳的办学态度。 6天前 收起 孤雁寒山 通过实例讲解,便于理解。重点介绍了分析的思路和方法。提纲挈领,非常棒 6天前 Touch3 1 按照实际解答 ,老师讲课很激情 2 .网络不给力,一段时间卡顿了 3.解决了怎么看别人代码的困惑 4.多举办一些专题公开课,可以贴出来吸引人气 6天前 米仔宝宝 有举例,通俗易懂,对我这个初学者技能提高很有帮助。 1周前 仰望天上的光 最好能够提前一天左右将课程的代码和具体的问题先发给大家,然后课堂讲解。之后可以再搞一个类似的代码(之前没有发给大家看),现场用学到的方法解决。 1周前 李哲 关键是思路,按照这个思路解决问题会节约非常多的时间 1周前 wayne 不管学习还是工作中,会节省很多时间和少做很多无用功 1周前 最新回答 SUNWET 对于初学者在一开始学FPGA有这样的一个指导思路非常好,老师给指导的过程结合实例,理解的过程更容易,就是自己没提前准备好预习课程,上课的过程有点仓促,但老师讲解的如何阅读代码的主要思路和重点非常突出。 5天前 sophia 1 倒推法比较好,思路比较清晰,目的功能比较明确,设计代码也比较方便 2分享桌面不太流畅,希望老师检查是否是网络问题 3 通过这次听讲,对于阅读别人的代码有些帮助,知道阅读思路 4希望明德杨能够及时跟进学员学习情况和进度,以及学习的效果 6天前 收起 Maxwell? 讲的比较好的地方地方是能以说有的内容实际出发给建议,工作思维的方式提高了。在课前可以将每次讲的内容做一个简单的介绍,在课前能让学员对今天的内容,也可以做下准备工作,以便更好的吸收和进入状态。总的来说帮助效果可以,讲了些是实际工作必备的前提。 6天前 收起 破晓 1,可以扩大大家对代码的认识,扩展视野,很好的上课方式 2,暂时没有。。。 3,增加理解别人代码的思路 4,希望以后多出点这样的视频 6天前 较量 1.讲解通熟易懂,互动很带劲,留有充足的时间给学员独立思考。 2.课上讲完能继续有课下练习太好了,方便后面巩固 3.自己代码要写的清晰才能方便别人查看,最好加注释,读别人的代码要从功能出发读取,大的通用的可以知道其功能直接调用,小的不知名的干脆自己写就行。感觉到了我们这套架构的优越性,通熟易懂简洁明了。 4.每节课信息量可以一如既往的短小精悍,上大课很长时间不易掌握重点。 6天前 收起 johnson 1、讲解思路清晰; 2、建议讲解的时候及时询问下同学的反馈,防止网络问题; 3、提供了阅读代码的正确方法; 4、建议及时收集大家的反馈,对有普遍性的问题及时集中讲解。 6天前 收起 孤帆远影 潘老师讲的思路非常好,这样阅读代码可以少走很多弯路;希望多开一些这样的公开课,发散一下大家的思维! 6天前 枫叶 1 .如何阅读别人的代码,老师通过一个实例来进行谅解,不能只看代码,首先要知道实现的功能,看看要实现这个功能代码的实现,这个也有助于我们在做项目的时候如何去做,应该首先清楚功能,实现的目标是什么,然后再去设计,整个课程过程老师讲解很清楚,通过学生问问题,互动,有助于对于问题的理解,很好的学习过程。 2.这次公开课程中间可能由于网络的原因出现一些问题,屏幕出现停滞问题,让老师又重新讲解。可能会耽误老师时间。 3.最近在学习边缘检测工程,正好也是阅读工程代码,但是按照老师规范的代码,很容易看懂,真的特别清晰容易理解,就是清楚模块的功能,然后看要实现功能,代码怎么实现,往结果去靠拢,这样理解起来会更容易。 6天前 收起 hyu 1、提供阅读代码的思路。主要是先弄懂方案具体要完成的功能,再去看代码。 2、改善意见:网络不太好,有点卡。 3、挺有帮助的,这样阅读代码有思路了。 4、建议多举行公开课。 6天前 小马过河 先了解功能,再看代码这个将的不错,潘老师结合两个例子讲解,分享了怎么看别人代码的基本流程,并对边缘检测工程的代码怎么看有了帮助。略微遗憾的是这次讲解中间网有点卡,影响到视频的连贯性,所幸有录播视频可以回看。一如既往的支持明德杨的公开课 6天前 收起 望星云 这次公开课围绕阅读被别人的代码开展,在拿到别人代码的时候,不着急看内容,先从宏观上了解想要实现的功能,然后细看接口、时序、协议等,这也是我现在遇到的问题,之前总是阅读每个模块,查手册,得出功能,再每个功能结合起来想它的总功能,确实非常费时间,潘老师这节课正是解决了这一困难。 改善建议的话我觉得老师讲课时可以关注一下大家的反应,这样网络卡时就能及时发现,不然还得再讲一遍,还有一个,我觉得老师的语速一点快,有时候听不太清(也可能是我自己的问题,哈哈)。 最后说一点,只要每次课有收获,哪怕是学到一个知识点我也觉得进步了,希望跟着老师多学习,多进步。 1周前 收起 小凯 这次课来的还是很及时,正好这一段时间一直在写代码,看代码,感觉很痛苦。 点了主题之后给了一个具体的例子,让我以后具体做起事来还是有迹可循,赞。这次课最不好的就是环境有点不好,断了一次,链接比较慢 1周前 收起 It's my life 无论做什么思路最重要,这次阅读代码的方法感觉就是从大处着手,由大到小,再入微,波及到每一行代码;这个方法对于提高效率很有作用。 1周前 夜听春雨 1.从实例开始讲解,先让同学们思考,然后点拨,整个过程,通俗易懂,有种豁然开朗的感觉。 2.改善的建议暂时没有,觉得这样讲课的方式很轻松自由,人多也很有气氛。 3. 看别人的代码,必须从弄懂代码的所要实现的意图和功能开始,这个讲的比较好,明确了思路方向。 4..潘老师很用心,为了让学员更快的掌握FPGA,真是煞费苦心,辛苦了,没有什么建议,希望这种形式的讲课可以持续下去,让更多的学员获益。 1周前 收起 寒灵 此次课程比较好的地方是从一个具体的例子入手,让学生亲身经历一次阅读不规范代码的经历,体会阅读他人代码中遇到的问题和解决办法。平时经常要阅读开发板子带的demo,今后工作中也少不了阅读他人代码,所以我认为这个课程对我的帮助会很大。 希望可以更多地举办类似课程,题目一方面从设计共性问题中找出,另一方面来自学员需求。 1周前
296 次阅读|0 个评论
分享 助力中国芯片业崛起,潘文明2017全国高校FPGA巡讲开幕
njiggih 2017-11-22 16:57
助力中国芯片业崛起,潘文明2017全国高校FPGA巡讲开幕
智能时代的到来,令芯片的需求与日剧增。中国每年均需消耗占全球四成以上的芯片,成为最大的芯片需求国。 据海关总署数据,截至 2017 年 10 月底,本年度中国 集成电路进口金额已高达 2071.97 亿美元。由于部分芯片还存在需求缺口,实际需要进口的芯片比这个数据更高。 长期以来,在集成电路发展方面,西方发达国家对中国实行严格的封锁限制。中国企业对于海外芯片企业的商业并购多次被相关国家政府阻止。近年来,中国 政府将芯片产业提到国家战略安全的高度, 设立国家产业投资基金 并投入大量资金支持。 值得特别注意的是,芯片业属于技术密集型型产业。资金和技术人才是芯片业发展不可或缺的双轨。当前我国芯片业技术人才严重短缺,按照目前速度,到 2020 年达到一万亿产值来看,人才缺口至少有 40 万。 “十年树木,百年树人”,没有相对比较大的基础人才群体,解决人才短缺以及拥有芯片产品“高精尖”技术,是不可能的。看到这些现象,现任明德扬科教总经理的潘文明先生,放弃国内一流企业的高薪待遇及再三挽留,立志投身于芯片设计教育事业。从基础抓起,从大学在校生培养开始,为中国芯片业崛起尽拳拳赤子之心。 2017 年 11 月 17 日起,潘先生开始了他的全国高校巡讲之旅。第一站设在紧邻国际级集成电路基地的广东工业大学。演讲包括芯片业的现状、未来与发展、大学生高新领域就业创业、正确的学习方法,以及 IC/FPGA 设计领域非常优秀的《至简设计法》介绍等,获得在座学子的一致认可和交口称赞。 让我们一起期待和见证,在众多潘文明式热血报国的芯片行业人共同努力下,脚踏实地、拼搏奋进,中国芯片业必将如同最耀眼的新星,从东方迅速升起,从而屹立于世界之巅。这是时代赋予他们的——光荣与使命。
15 次阅读|0 个评论
分享 让我们一起打起FPGA工程师就业保卫战
njiggih 2017-11-14 11:41
就业,已经成为了一个没有硝烟的战场。参与这场战争的每一个人的最终目的就是取得胜利(找到满意的工作并能生存发展下去)。某种意义上,我们可以把FPGA设计看成职场竞争中的一个优秀兵种,其具备的诸多优势,在这里不做过多说明。 就FPGA学习者而言,正式就业前由于学校是采用大堂上课模式,不能照顾到每位学员的学习,同时由于技术的发展是非常迅速的,学校大部分知识在工作中都用不到,培养的人与企业要求相差很大。企业不是学校,他们需要的是能直接上岗做事的人。而经常会遇到如下一些问题的求职者很难获得企业的青睐。 1.感觉自己都已经学会了懂了,但是面对毕业设计(实际项目)时一筹莫展; 2.看导师做的项目时觉得自己也已经会了,自己独立做项目时因为某些原因卡壳而无法继续下去; 3.东拼西凑完成了一个简单的毕业设计,可是一遇到复杂的或是不同的项目时力不从心; 4.费了九牛二虎之力把代码写完了,却发现不能实现项目要求; 5.不断的进行仿真和调试,总是麻烦不断,到处是BUG到处打补丁最后乱成一团; 6.代码写出来了,也能完成项目要求。可是写出的代码不断别人看不懂,就算自己回头去看也要回忆好半天; …… 在军队里,实战演练是最直接快速提高战斗力的手段。在FPGA设计中,将所学的理论知识运用到实际项目中,完全达到实战要求,是进入职场必不可少的一个环节。由此,参加实战式的培训,具备独立完成复杂实际项目的能力,达到职场实战要求非常重要。 这时找到合适的培训班(导师),就是能否完成这个目标的最主要的要素了。目前市场上有些培训班就是一些花架子,吹嘘得天花乱坠,实际上却不一定能解决问题。好的培训班(导师)能让你在最短的时间内快速提高设计能力、设计质量、设计效率,规范从架构设计到代码编写整个系列的流程,从根本上解决设计无思路、代码混乱等问题。明德扬科教是全实操,强调的是实用、快速、高效、便捷。学员学的是实际工作的技能,更加贴近企业实际需要,对于就业和职业发展有着非常显著的效果。而且有试听课程,有没有料行内人一眼可知。 详情可加我QQ854618250具体咨询。
16 次阅读|0 个评论
分享 【时序约束】关于约束时钟频率
dongdong100 2017-6-25 23:37
1、如果没有使用PLL,直接约束输入时钟频率即可。 create_clock -period 10.000 -name clk 2、如果有使用PLL,那么对于ALTERA和XILINX,约束略微有些差异: ALTERA: 需要约束PLL的INPUT时钟频率, create_clock -period 10.000 -name clk 另外需要输入: derive_pll_clocks,表示PLL输出的时钟也是伴随有时序约束(意思就是PLL输入时钟约束了,输出时钟也受到约束了,不用再加约束了)。 Xilinx: 需要约束PLL的INPUT时钟频率, create_clock -period 10.000 -name clk 不需要再加PLL输出时钟的约束,也不需要输入类似 ALTERA的 derive_pll_clocks目命令,和FAE确认过,可以直接传递相关约束信息 。 ---以下为 阿东团队原创开发的FPGA学习板选购指南(覆盖入门进阶+高端各个系列),想和阿东一起学习FPGA的同学可以根据需求选择: 入门级别:完全零基础、想从低端外设学起的同学建议选择暴风四代E6开发板: E6入门板推广链接: 入门级别:有部分基础或者零基础的同学,想学习FPGA驱动以太网、摄像头、TFT彩屏、LCD1602等外设和项目开发的同学选择如下: E10开发板推广链接: Xilinx S6开发板推广链接: 进阶级别:有一定基础或者部分基础的同学,想学习FPGA驱动以太网、摄像头、USB2.0、音频等高端外设和项目开发的同学选择如下: 高端EP4CE10开发板推广链接: 高端EP4CE10开发板高配版本(标配摄像头+高端USB下载器)链接: E10 高配FPGA板链接: 高端级别:有一定基础或者部分基础的同学,想学习FPGA驱动DDR2、以太网、摄像头、USB2.0、音频等高端外设和项目开发的同学选择如下: E30 DDR2 FPGA板链接:
个人分类: FPGA|794 次阅读|0 个评论
分享 【区别】关于CPLD和FPGA
dongdong100 2017-6-25 12:16
CPLD 和 FPGA 都是我们经常会用到的器件。有的说有配置芯片的是 FPGA ,没有的是 CPLD ;有的说逻辑资源多的是 FPGA ,少的是 CPLD ;有的直接就不做区分,把他们都叫做FPGA。那么两者到底有什么区别呢?下面我们就以 Altera 公司的CPLD和FPGA为例来说说两者的区别。   首先我们看一下CPLD的芯片结构,搞清楚CPLD是由哪几部分组成的。下图是MAX系列CPLD的芯片结构图:   从图中可以清楚的看出来CPLD主要由三部分组成:Macro cell(宏单元),PIA(可编程连线),和IO Control Block(IO控制块)。每个宏单元都与GCLK(全局时钟)OE(输出使能)GCLR(清零)等控制信号直接相连,并且延时相同。各宏单元之间也由固定长度的金属线互连,这样保证逻辑电路的延时固定。其中宏单元模块是CPLD的逻辑功能实现单元,是器件的基本单元,我们设计的逻辑电路就是由宏单元具体实现的。下面我们再来看看宏单元的具体结构:   一个宏单元主要包括了LAB Local Array( 逻辑阵列 ),Product-Term Select Matrix(乘积项选择矩阵)和一个可编程D触发器组成。其中 逻辑阵列 的每一个交叉点都可以通过编程实现导通从而实现与逻辑,乘积项选择矩阵可实现或逻辑。这两部分协同工作,就可以实现一个完整的组合逻辑。输出可以选择通过D触发器,也可以对触发器进行旁路。通过这个结构可以发现,CPLD非常适合实现组合逻辑,再配合后面的触发器也能够实现一定的时序逻辑。  我们再来以cyclone系列为例看看 FPGA 的内部结构:    FPGA 内部主要就是由 LAB单元 ,连线和IO单元组成。一个 LAB单元 又包含若干个LE模块。LE模块是Cyclone FPGA 的基本逻辑单元,下图是LE模块的具体结构:   初看上去好像比较复杂,其实最主要的部分就是LUT查找表模块,以及后面的D触发器。其他都是一些清零进位旁路等等控制信号逻辑。也就是说查找表是FPGA最根本的逻辑单元。Cyclone FPGA使用的是4输入LUT查找表。我们设计的逻辑电路最终都是通过EDA工具把所有可能的结果计算出来然后储存在查找表里面。每次根据输入信号查找对应的结果,然后输出就可以了。也就是说FPGA的工作更像是一个RAM,根据不同的输入信号(地址)输出相应的数据。   通过上面的结构图比较我们就可以清楚的看出来 CPLD 是由实实在在的组合电路组成的,而FPGA说到底就是一个巨大的查找表!也正是这个根本的差异造成了 CPLD 和FPGA各方面的不同。除了 Altera 以外,主要的 CPLD 和FPGA生产厂商还有 Xilinx ,Actel,Lattice以及Atmel等。各家公司的产品各有特点,在架构上会略有区别,但基本原理都是相同的。下面我们整理一下CPLD和FPGA的主要区别:   1) CPLD的 逻辑阵列 更适合可重复编程的EEPROM或Flash技术来实现。而FPGA显然是利用SRAM技术更合适。   2) 由于是EEPROM或者Flash工艺决定了CPLD是有一定的擦写次数限制的。而FPGA在实际使用中几乎可以说是无配置次数限制。   3) CPLD由于采用的是EEPROM或者Flash工艺所以配置掉电后不丢失,也就不需要外挂配置芯片。而FPGA采用的是SRAM工艺,配置在掉电后就没有了,因此需要一个外部配置芯片。   4) CPLD的安全性更高。由于配置芯片的存在,FPGA的保密性就会比CPLD略差。逻辑数据有可能被读取。(当然FPGA芯片会有一定的加密措施)   5) CPLD由于不需要上电重新配置,所以上电后可以马上工作。而FPGA上电后需要配置时间,逻辑量的大小配置方式的区别也会影响配置时间的长短。   6) 由于CPLD的连续式布线结构,决定了它的时序延时是均匀和固定的。而FPGA采用的分段式布线结构造成了延时不固定。   7) 由于工艺难度的差异,CPLD一般集成度较低,大多为几千门或几万门的芯片规模,做到几十万门已经很困难。而FPGA基于SRAM工艺,集成度更高,可以轻松做到几十万门甚至几百万门的芯片规模,最新的FPGA产品已经接近千万门的规模。   8) 同样由于结构的差异,CPLD更适合完成的是复杂的组合逻辑,如编、译码的工作。而FPGA更适合做复杂的时序逻辑。换句话说就是FPGA更适合触发器丰富的逻辑结构,CPLD适合于触发器有限但是乘积项丰富的逻辑结构。   9) 也是由于工艺的原因,一般CPLD会比FPGA的功耗高。 当然以上只是 CPLD 和 FPGA 通常意义上的区别,技术是在不断发展中的,这些差异也不能一概而论。随着技术的发展, CPLD 和 FPGA 也在不断的更新当中。    Altera 在Stratix III 系列 FPGA 以后的产品中调整了LE的结构,如下图:   从原来的一个4输入查找表加D触发器变成了两个6输入查找表加两个D触发器。再进一步细化查找表的结构图如下:   一个6输入查找表又可以细分为一个4输入查找表和两个3输入查找表。无论结构怎么变,只是出于对资源优化利用考虑的改变,基本的LUT查找表方式没有变。但是新出的MAX II系列和MAX V 系列 CPLD 则从根本上模糊了CPLD和FPGA的区别。通过阅读芯片手册我们可以发现,两个系列的CPLD虽然名字没有变,但是架构已经完全是与FPGA相同的系统架构了,最小单元也变成了LUT查找表,宏单元已经消失不见了。也许和CPLD还能搭上关系的就是两个系列把配置电路集成到了芯片当中,在实际使用中和原有的CPLD保持了相同的使用习惯。可以说两个系列的产品已经是披着CPLD外衣的FPGA了。   从技术的延续性上来看,可编程器件技术大致经历了PROM-PLA-PAL-GAL-EPLD-CPLD和FPGA的发展过程,CPLD和FPGA是两个不同的发展分支。生产厂商似乎在模糊CPLD和FPGA之间的区别。也许以后只剩下名字的区别,两者会统一成一类器件,或者又会出现更新的技术作为替代。无论技术如何演进,作为工程师而言,我们要做的就是去把握每种器件的原理,优缺点和适用场景,然后在实际的项目中正确选择,灵活使用。 【转】本文引用地址: http://www.eepw.com.cn/article/159017.htm 【阿东点评】 1、 是否需要同时学习FPGA和CPLD? 很多同学有疑问,是否需要同时学习FPGA和CPLD,阿东在此表示,完全没有必要,以为FPGA和CPLD的设计语言都是Verilog,至于CPLD和FPGA内部结构不一样,在编码阶段完全看不出来,软件会根据CPLD还是FPGA自动生成编程文件,所以学习的话建议值学习FPGA即可,FPGA学会了,基本就会用CPLD了。 2、现在的电路设计规模越来越大,动不动都是上万个或者几十万个甚至上百万个寄存器规模,这种规模下,CPLD根本不会考虑的,CPLD资源太少。
个人分类: FPGA|2 次阅读|0 个评论
分享 明德扬FPGA设计模块划分方法(1)
njiggih 2017-5-4 17:40
本模板: 明德扬 首创全新FPGA设计技巧-- 至简设计法 ,教你如何一步一步去完成一个复杂电路的设计,里面很多有实用技巧,熟练运用这些技巧,有助于你写出非常优秀的 FPGA设计 代码。非常简洁易读,欢迎比较。 一、模块划分概述 模块划分,顾名思义是指模块的划分。但是, 明德扬 提出的模块划分,是广义的“模块划分”。后续所提及的“模块划分”,不单单指模块的划分,还包括模块划分好后,模块的端口及模块之间数据流向的确定。 二、模块划分原则 明德扬的模块划分原则有两条: 原则一:一个功能一个模块。 按功能划分模块是模块划分最基本的指导思想,当我们拿到一个项目后,最直接的想法就是先确定项目需要多少小功能为之服务,然后把一个个功能实现,最后通过顶层模块的例化,完成项目要求。 原则二:相同架构一个模块。 这里的相同架构不是单单是指模块整体为计数器架构、状态机架构或FIFO架构,还要求在架构内部相同或相似。比如:计数器架构中计数器的个数或计数规律相同或高度相似;状态机架构中状态的划分或跳转条件相同或高度相似。 三、模块划分端口规范 在确定模块划分后,需要明确模块的端口,及模块与模块之间的数据交互。 明德扬 在实际项目经验总结得到的一般模块端口信号规范。读者在完成项目模块划分后,确定端口及数据流向时参考使用。 表5.1 端口信号规范 信号 说明 clk 模块工作时钟 rst_n 系统复位信号,低电平有效 en en 有两种用法: 1. 使能命令信号,类似于 vld ,当其为 1 时表示一个命令有效; 2. 使能状态指示,当其为 1 时表示处于使能状态。 vld 数据有效标志指示信号,表示当前的 data 数据有效。注意, vld 不仅指示了数据有效,而且还指示了有效的次数。时钟收到多少个 vld=1 ,就表示有多少个数据有效 data 数据总线。输入一般名称为 din ,输出一般名称为 dout 。类似的信号还有 addr , len 等 err 整个包文错误指示,在 eop=1 且 vld=1 有效时才有效 sop 包文起始指示信号,用于表示有效包文数据的第一个比特,当 vld=1 时此信号有效 eop 包文结束指示信号,用于表示有效包文数据的最后一个比特,当 vld=1 时此信号有效 rdy 模块准备好信号,用于模块之间控制数据发送速度 例如模块 A 发数据给模块 B ,则 rdy 信号由模块 B 产生,连到模块 A (即对于 B 是输出信号,对于 A 是输入信号); B 要保证 rdy 产生正确,即此信号为 1 时, B 一定能接收数据; A 要保证仅在 rdy=1 时才发送数据。
个人分类: 明德扬-至简设计法|326 次阅读|0 个评论
分享 有没用DLP 4100 开发的同学或朋友,一起交流学习一下。
州平卞 2017-4-21 15:56
如题:有没用DLP 4100 开发的同学或朋友,一起交流学习一下。
个人分类: DLP|251 次阅读|0 个评论

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-10-14 10:57 , Processed in 0.079947 second(s), 25 queries , Gzip On, MemCache On.

Powered by EEWORLD电子工程世界

© 2019 http://bbs.eeworld.com.cn/

返回顶部