搜索

tag 标签: Xilinx

相关帖子

版块 作者 回复/查看 最后发表
Xilinx Zynq UltraScale+ 3U VPX图像处理模块,16G DDR4,最大可支持12路1080P 30fps attach_img 信息发布 yinyidianzi 2019-6-13 0 101 yinyidianzi 2019-6-13 15:16
FMC141-4路 250Msps/16bits ADC, FMC板卡 信息发布 hexiaoyan721 2018-6-13 0 606 hexiaoyan721 2018-6-13 15:01
380-Xilinx Kintex UltraScale FPGA KCU1500 Acceleration Development Kit attach_img 信息发布 hexiaoyan721 2018-6-8 0 606 hexiaoyan721 2018-6-8 16:30
悬赏 vivado中AXI转I2Cip核的使用时读不到数据 - [悬赏 5 枚芯币] attach_img FPGA/CPLD swaggy 2018-5-31 0 1921 swaggy 2018-5-31 10:31
荐读:如何学习FPGA 【EE_FPGA学习乐园】 大辉哥0614 2018-5-22 22 3063 chenbingjy 2019-9-16 14:21
vivado 调用IP核 详细介绍 【EE_FPGA学习乐园】 大辉哥0614 2018-5-15 3 2665 ywlzh 2018-5-15 17:34
求助:CycloneVSOC网口通信不成功 【Altera SoC】 uyuewtu7686 2018-4-25 2 1571 zhiyurui 2018-9-1 15:01
100BASE-X PCS/PMA OR SGMII IP 的resetdone 信号时高时低的不稳定 FPGA/CPLD 李大家 2018-4-8 0 1010 李大家 2018-4-8 10:06
推荐:FPGA vivado 烧写bin格式文件到 flash 中 【EE_FPGA学习乐园】 大辉哥0614 2018-4-2 0 1515 大辉哥0614 2018-4-2 10:59
Xilinx ISE Webpack14.1 Testbench... attach_img 【EE_FPGA学习乐园】 shaowen0213 2018-2-15 2 2190 刘123 2018-7-13 16:35
FPGA,k7_pcie_dma_ddr3_base仿真 attach_img 【EE_FPGA学习乐园】 橙子公民 2018-1-30 1 1317 橙子公民 2018-1-30 22:39
基于 FPAG xilinx vivado 仿真模式介绍 FPGA/CPLD 大辉哥0614 2018-1-24 1 1529 star_66666 2018-1-24 11:05
关于FPGA实现LVDS屏幕控制 【EE_FPGA学习乐园】 872190600dxx 2018-1-23 3 2651 872190600dxx 2018-6-21 11:20
开发板问题 【EE_FPGA学习乐园】 HAORUIMIN 2018-1-22 4 1203 电子微创意 2018-1-22 21:41
xilinx LVDS输入差分摆幅 FPGA/CPLD xiaoxiao2211 2018-1-18 1 1574 ienglgge 2018-1-20 09:48
MATLAB 的system generator仿真闪退 FPGA/CPLD xpfshawn 2018-1-5 1 470 xpfshawn 2018-1-5 21:46
基于 FPGA vivado 2017.2 Basys3 信号发生器 设计 FPGA/CPLD 大辉哥0614 2018-1-2 0 1010 大辉哥0614 2018-1-2 10:11
关于Xilinx JTAG下载器 FPGA/CPLD phdwong 2018-1-11 30 8968 mushengcn 2019-6-11 15:44
在ISE中添加IP核 attach_img FPGA/CPLD xpfshawn 2018-1-11 0 909 xpfshawn 2018-1-11 15:46
简谈基于FPGA的千兆以太网 FPGA/CPLD 大辉哥0614 2018-2-3 2 2036 mars4zhu 2018-3-21 17:26

相关日志

分享 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 个评论
分享 237-基于Xilinx Kintex-7 XC7K325T 的FMC/千兆以太网/SATA/四路光纤数据转发卡
hexiaoyan721 2018-6-13 15:09
基于Xilinx Kintex-7 XC7K325T 的FMC/千兆以太网/SATA/四路光纤数据转发卡 一.板卡概述   本板卡基于Xilinx公司的FPGAXC7K325T-2FFG900芯片,pin_to_pin兼容FPGAXC7K410T-2FFG900,支持64bitDDR3容量2GByte,千兆以太网卡,HPC的FMC连接器,提供4路光纤接口,板卡支持各种接口输入。 二、功能和技术指标: 支持64bitDDR3,容量2GByte; 支持1个FMCHPC中LA,HA,HB全部接口和DP0~DP78路高速接口,兼容ML605等开发板,后面板输出; 提供4路光纤接口,前面板输出,; 支持4个LED指示灯; 支持2个按钮; 所有器件支持商业级,工业级; 支持千兆以太网。 三、软件功能: 支持DDR3IP开发; 网络支持Windows测试程序, FMC上接高速ADC,DAC子卡,CameraLink子卡,光纤子卡等,并可提供演示程序。 支持千兆以太网。 四、物理特性: 板卡尺寸12X18cm 五、应用领域: 软件无线电处理平台 图形图像硬件加速器 NetFPGA 北京太速科技有限公司 在线客服:QQ:2046099386 公司网站: www.orihard.com 联系电话:15084122580
13 次阅读|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 个评论
分享 如何看懂别人的代码(上)
njiggih 2017-12-11 14:11
对于 IT 相关从业人员来说,看别人代码是必不可少的磨难。在学习阶段,我们经常需要从书上看别人的代码以吸取宝贵经验,这是相当枯燥无趣的过程,也时常无法领会作者的意图。 在实际工作中,不可避免的出现需要接手做到一半的项目或是团队合作的项目,这时候就必须看以前的工程师的代码。如果说看书上的代码用痛苦来形容的话,那么这种情况时遇到 代码不够规范或者设计不合理,简直 就是苦不堪言。还有一些神一般的选手, 设计者在编写代码时的 “ 灵机一动 ” , 其结果只有他自己和上帝才看得懂。这些代码能看得你觉得生不如死,甚至开始怀疑人生:到底是代码写得混乱 or 我水平不行?!你以为这是最痛苦的吗? NO !还有一种情况足以令你看得生不如死,甚至开始怀疑人生。那就是 遇到运行不正常的代码,对问题排查错误花的时间和精力还不如重新写一遍,这时你的内心完全是崩溃的! 有一件事非常无奈,我们不可能要求别人的代码都非常规范。所以,正确的学习方法和思维方式尤为重要。怎样看他人代码才是正确的方式?看代码之前应该做些什么准备工作?看代码用正向思维还是逆向思维?如何判断代码中哪些地方是否值得借鉴?由此,掌握到一种通用的去看懂别人代码的技巧显得非常重要。下面我们就来谈谈这方面。 我们知道,而实现功能可能有很多种方法,所以不同的人写出的代码不相同。通过看代码去知道它要实现的是什么功能是一件很困难的事情。有些初学者会想到采取仿真一下、看电路图、流程图、时序图、注释等等方法,都是不可取的,通过这些你还是无法知道它的功能,以及有没有错误。 那么正确的方法是什么呢?我们采取一种可称之为“反推法”或是“逆向法”的方式,这个问题就迎刃而解了。要知道,代码的目的是实现功能。无论你用那种代码,有一点完全相同的就是“实现功能”这个最终结果。了解到这一点,我们就可以通过结果(功能)去反推过程(代码),代码的思路、流程、用途就抽丝剥茧清晰的显露出来。好的,下面我们举个实例来说明怎么通过反推法有步骤的去看懂别人的代码。 代码 1 。 如果我们按照自上而下的顺序去看这个代码,通过代码的过程去看实现的功能会是很困难的事,甚至看不明白它要实现的是什么功能。 Ok ,我们现在从功能看起,这个代码要实现的是“帧率采样计算”这个功能,可以理解为图片每秒显示多少帧数。 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 秒,或是其他方案来实现呢?各种方法的优缺点在哪里?通过反推法得知作者实现项目的方法并思考,这种方法正确还是错误?如果是错误或者这种方法不太好,那么我们如何避免?如果是优秀的代码,我们如何借鉴并能举一反三地运用到其他项目中去?本例只是选取项目中的一个小的节点,对于看整个项目的代码来说可以运用反推法吗?敬请关注下一节:《如何看懂别人的代码(下)》。
337 次阅读|0 个评论
分享 FPGA-全网公开课-第01期录播-《如何读懂别人的代码》
njiggih 2017-12-6 15:38
FPGA-全网公开课-第01期录播-《如何读懂别人的代码》
?ω? ?ω? ?ω?福利来啦! 明德扬公开课视频,如何读懂他人的代码 http://www.mdy-edu.com/product/586.html. 如想目前您正解决技术项目问题,随时call我(q854618250),希望能帮到您
39 次阅读|0 个评论
分享 Kintex-7 实现PCIE x4 DMA传输
jiajia6254 2017-2-16 18:03
Kintex-7 实现PCIE x4 DMA传输
原先的博客被删除,这篇Mark下,资料备用 本文介绍的是一种简易的PCIE x4 DMA传输,借用现有Kintex-7平台,直接解决了DMA传输问题,通过附件指导,非常容易就完成验证了 GVI_KXK7TC01_PCIe_DMA.pdf GVI_KXK7TC01_PCIe_DMA.pdf
个人分类: Xilinx|268 次阅读|0 个评论
分享 [慕展和IIC春季论坛]阿牛哥观察慕展2015之机器视觉篇
jameswangsynnex 2015-3-23 17:04
2015年3月17日到20日期间,上海分别举办慕展和IIC春季论坛。阿牛哥本人就是做电子元器件和开发板行业的, 当然要参加慕展和IIC春季论坛了。 慕展2015期间,很多国际国内知名机器视觉和光电检测开发制造商都集中在N1馆。国际上领先的FPGA 厂商Xilinx 在N1馆也有展台。原来很多知名的机器视觉厂商已经有采用Xilinx Zynq 方案设计的产品。芯片原厂有最终客户采用 自己方案的产品展示,这就是给最终客户最大的说服。
个人分类: 产业动态|345 次阅读|0 个评论

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

GMT+8, 2019-10-14 12:00 , Processed in 0.045608 second(s), 13 queries , Gzip On, MemCache On.

Powered by EEWORLD电子工程世界

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

返回顶部