1571|2

323

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

FPGA初学者易触雷区 [复制链接]

FPGA初学者易触雷区.zip (9.43 KB, 下载次数: 5)



 

此帖出自FPGA/CPLD论坛

最新回复

优秀  详情 回复 发表于 2020-5-13 06:09
点赞 关注
 

回复
举报

86

帖子

749

TA的资源

一粒金砂(中级)

沙发
 

帮你直接把内容发到回帖里吧:

 

引言

 

    FPGA的设计是基于硬件描述语言(HDL)进行编程的一种工作,但是又不能理解为纯粹的软件编程问题,因为FPGA的设计本质上是硬件产品的设计。因此,设计者应从系统级别的角度进行设计,从硬件、软件两个层次并进考虑问题,才能保证FPGA产品的性能最优。本文通过在实际工作中观察与总结的若干问题进行总结,不妨作为FPGA初学者应注意事项若干,欢迎大家多交流,用于促进大家一起进步。

 

    雷区1:注释问题

 

    很多初学者没有在代码中添加注释的意识,这将导致三个问题:一、团队其他成员在帮助你校对或debug时看不懂你的代码,需要一次次人工口头的沟通;二、设计者自己对自己开发时间较久远的HDL代码忘记了设计意图,简而言之需要努力地回忆才能想起来;三、不利于团队化设计(大家都很忙,谁有时间听你口头一句句讲代码)?

 

    所以,看起来微不足道的注释问题其实是一个大问题,因此HDL代码实现阶段,记得适当添加衣物,哦不,注释语句!

 

    至于注释语句怎么添加比较好,请大家查一下自己公司的标准或某些大公司的标准(如果你的公司没有相关标准的话,建议你查阅一下诸如华为这样的大公司的标准)。

 

    雷区2:代码的规范使用问题

 

    正如引言指出:FPGA的设计本质上是硬件产品的设计——简而言之,HDL也就是逻辑器件在编程语言上的一种映射。如果逻辑器件是规范的(应该说,逻辑器件肯定是规范的),那么我们的代码也应该是规范的。然而,HDL又是一门编程语言,就像人类的自然语言会出现语词不搭意但是别人大多数情况下也能听懂的情况一样,HDL的描述上也具有随意表达的可能性——如果初学者没有遵守大家公约的规范代码,那么往往会制造出一些不规范的代码,而这种不规范也可以通过软件仿真、综合编程、布局布线,虽然看似无伤大雅,但是有两条不利后果:2、这种不规范的代码最容易出现BUG;2、代码显得很不专业,与人交流时大家会把你和你的团队当外行。在这里推荐一篇关于规范使用代码文档《Actel HDL UG》,这是Actel公司编写的关于逻辑器件的代码实现的一本官方指导。

 

    例如逻辑语句:

 

    if (条件1)

 

        A <= '1';

 

    else

 

        B <= '1';

 

    end if;

 

    这样的逻辑,看似符合人类的语言赋值语句,其实本质上生成的是一个奇怪的锁存器:该锁存器能对A、B两种数据进行锁存,且A的优先级高于B。然而实际上,这样的锁存器并不规范——可查阅任意一本公司的编写规范(推荐Actel公司的HDL UG)。

 

    私以为,依据上述描述的功能,语句应该这样描述比较规范:

 

    if(条件1)

 

        A <= '1';

 

    else

 

        A <= A;

 

    end if;

 

    if(!条件1)

 

        B <= '1';

 

    else

 

        B <= B;

 

    end if;

 

    这样,相同的功能是通过两个标准的锁存器实现的,而非一个不标准的具有某种优先级规则的“锁存器”实现——这里要提示一点,关于锁存器的使用应该注意:其实锁存器的使用在很多公司的标准里是不推荐甚至是不允许的,实际开发中一定要注意。

此帖出自FPGA/CPLD论坛

点评

优秀  详情 回复 发表于 2020-5-13 06:09
 
 

回复

1万

帖子

203

TA的资源

管理员

板凳
 
MartinFowler 发表于 2020-5-12 15:59
帮你直接把内容发到回帖里吧:

 

引言

 

    FPGA的设计是基于硬件 ...

优秀
此帖出自FPGA/CPLD论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表