文章目录

  • 前言
  • 代码风格
    • 具体的代码风格
    • 我的总结

前言

这个2020年是多灾多难的一年,作为被困在家无所事事的普通老百姓我来说,憋得实在难受,想想在学校的过去时间是如此之珍贵,此刻如此虚度,甚是愧疚,于是觉得不能在闲着了,重操旧业,检查论文的同时记录博客。
记录博客,话题是一个关键,对于我来说,肯定是与HDL相关的东西;其次是对自己有用,这是初衷,当然也要有一定的启发作用,能让别人闲着无事翻到我的文章,有所帮助,那更好不过了。
前段时间在学校忙里偷闲写了HDLBits相关的博客,完成一个系列是有成就感的,至少是自己坚持去做了某一件事,对自己也是一种鼓舞。对我来说,意义不仅在于此,对于像我请教如何学习FPGA来说,我不用过于多费口舌,我提供一些学习的工具、文章等途径,让其自学,再好不过。我不会去手把手再去对一个人提供指导,这是血与泪的总结,当你付出了精力,付出了时间等等,却最终让自己“困惑”?这是多么痛的领悟。
这次选择《FPGA之道》这本书作为话题来源,是因为这本书确实和我有缘,当我研究生一(二)年级在图书馆遇到这本庞然大书之时,我便喜欢上了这本书了。喜欢不仅仅是其内容上的细致,每读一遍,每翻阅一张都会让人思考,这绝对是一本付出了心血的一本书,对于经常写博客的人来说,我能体会到这一字一字的诚意。我曾试图联系此书作者(当然我知道作者肯定不会搭理我的),我对这本书在市场上的绝迹深表遗憾,也希望作者能与时俱进,增加一些新的内容。令我备受鼓舞的是作者在我研三的时候给我回了邮件,并给了我一本电子版图书,真是意外,没有这个电子版,我也不会在此刻阅读这本书,更不会更新这一系列博客,因为我在老家,我不可能带着这本上千页的书回家。

代码风格

如果不是出于某种目的让代码生涩难懂,何不让自己的代码更加“人性化”?
如作者所说,HDL代码风格是FPGA设计的“脸面”,更是FPGA设计者的“脸面”,要不要脸,自己选择。
在这一点上,如果能留下风格简洁易懂的代码,确实能留下赞誉,而不是被人称为“坑货”?
当别人给我发送他的代码的时候,如果代码风格整齐系统,我会对此人很有好感,否则,除非不得不看,我是不屑一顾的。
一个比较实在的场合,例如找工作的时候,作为FPGA工程师以及IC工程师来说,代码能力的考察几乎不可避免,此刻如果写出的代码邋遢不堪,不仅让人怀疑功力,而且就算能力还行,也会有所顾虑。

具体的代码风格

这一段内容直接引用:

养成良好代码风格的第一步:要整齐。对,整齐是编写代码最基本的一个要求,也是最好做到的。无论是编程也好还是写作也罢,“整齐的”看上去总比“杂乱的”要好得多。因此,在培养自己良好代码风格习惯的最开始,要尽量注意将代码写的整齐一些。
养成良好代码风格的第二步:要统一。如果你已经能够做到写出整齐的代码,那么下一步就可以尝试去写统一的代码了。统一的代码首先是整齐的,但它不仅仅是整齐的,因为统一还代表了一种规律,即同样的写法代表的意义相同或相似。
养成良好代码风格的第三步:要易懂。如果你已经能够做到写出统一的代码,那么下一步请尝试去写出易懂的代码吧。易懂的代码肯定是统一的代码,但它不仅仅是统一的,因为易懂的代码要求它隐含的所有规律都是非常容易扑捉的,并且这些规律可以方便的辅助人们去更加容易、更加快速的理解代码。
养成良好代码风格的第四步:要精简。在增强代码易懂性的同时,代码规模也不可避免的被膨胀。那么这些膨胀中,有一些是必须的,而另外有一些肯定是冗余的。因此,代码精简的一个作用就是去掉这些冗余,不过,这还远不是代码精简的主要目的。自古以来,文学大家都是言简意赅的,因为一句话能说明白的事情你用了两、三句才说清,这只能说明你概括能力太差。因此,我们在进行程序设计的时候也是一样,随着自己水平的提高,也要不断地去优化自己的代码,让自己写出的代码尽量的简洁、干练。
整体、统一、易懂、精简,可以说这是良好代码风格形成的四个必经阶段,请一步一步的走过去,相信你会磨砺出适合自己的“宝刀”!

我的总结

从上段文字中可以看出,作者提出了层层递进的代码风格,也是形成良好代码风格的一个过程。
纵观互联网,也许对于良好代码风格的总结各有不同,但是如果你按照这样的方式形成自己的代码风格,无论是面对面试还是实践,绝对都是没有问题的。

  • 整齐,是基本要求,例如alway块内的begin,,,end要有自己的方式排列吧。写一段组合逻辑或者一段时序逻辑,提前把格式摆好,不仅可以利用这段时间整理思路,至少也不会最后遗忘吧。
  • 统一,关于统一是对整齐的进一步升华,整齐并不一定代表统一,但是统一的代码一定是整齐的。
  • 易懂,易懂的代码也一定是统一的,这是对思路上的要求。
  • 精简,在易懂的同时,尝试做到精简是对自己的进一步要求,这是水平提升的见证。
    额,就这样吧,打游戏去了。

FPGA之道(1)HDL代码风格相关推荐

  1. FPGA之道(71)提高设计的综合性能(三)提高设计的重用性与易改性

    文章目录 前言 提高设计的重用性 构建自己的IP库 提高设计的易改性 常量参数化模块设计 结构参数化模块设计 总线参数化 规模参数化 功能参数化 参数化设计的参数管理与组织 参数相关性 可传递的模块参 ...

  2. FPGA之道——FPGA开发流程之项目方案与FPGA设计方案

    文章目录 前言 FPGA开发流程 背景知识的分析与研究 项目方案的设计与制定 写清楚项目背景 写清楚项目需求 写清楚方案框架 写清楚算法细节 确保逻辑完备性 确保实现无关性 确保书面易懂性 算法可行性 ...

  3. FPGA之道(67)代码中的约束信息(四)状态机的相关约束

    文章目录 前言 状态机的相关约束 fsm_extract fsm_style fsm_encoding enum_encoding safe_implementation safe_recovery_ ...

  4. FPGA之道(66)代码中的约束信息(三)存储器以及寄存器的相关约束

    文章目录 前言 存储器的相关约束 ram_extract ram_style rom_extract rom_style 寄存器的相关约束 前言 这是这个话题的第三篇,最重要的前言是本文节选自:< ...

  5. FPGA之道(55)状态机的HDL模板

    文章目录 前言 状态机的HDL模板 状态集合的HDL定义 概念层级的定义 实现层级的定义 if or case? 各自特点分析 状态选择 次态及输出选择 状态的HDL描述方式 次态和次中间变量的描述方 ...

  6. FPGA之道(40)HDL的语法结构

    文章目录 前言 语法结构 省略与否请一致 范围方向请一致 端口声明请一致 参数声明请一致 映射方式请一致 代码缩进请一致 空格空行 注释编写 解释说明 段落分隔 代码保留 模块设计 确定好端口的顺序 ...

  7. FPGA之道(39)HDL的命名规则

    文章目录 前言 命名规则 命名要有意义 简单意义命名 复杂意义命名 一.下划线分隔法. 二.非首单词首字母大写分隔法. 多重相似命名 电平敏感命名 方向敏感命名 命名格式要统一 命名格式要区分 前言 ...

  8. FPGA之道(21)HDL语言的选择

    文章目录 前言 HDL选择 最后想说 前言 对于HDL语言的选择,这是一个可以讨论也是一个没有必要讨论的问题,通常我们选择学习哪一种语言的时候,很多种情况是迫于形势,例如在实验室师兄师姐使用哪种语言: ...

  9. FPGA之道(65)代码中的约束信息(二)乘法器的相关约束

    文章目录 前言 乘法器的相关约束 use_dsp48 mult_style 前言 这是这个话题的第二篇,最重要的前言是本文节选自:<FPGA之道>. 乘法器的相关约束 通常,FPGA开发者 ...

最新文章

  1. 20位程序员关于求职的疑问,以及我给出的参考答案
  2. scvmm2008R2创建委派管理员角色
  3. Embedding在网易严选搜索推荐中的应用
  4. Blazor University (1)介绍 - 什么是 Blazor?
  5. 【计算机网络复习 物理层】2.1.1 物理层基本概念
  6. 分布式光伏补贴_四川:2020年起工商业分布式光伏已无补贴
  7. 边缘AI:国内首个高性能神经网络认知+项目实战发布
  8. android 结束if循环_几款Android反编译器对循环结构的还原能力测试记录
  9. Jmeter录制脚本介绍
  10. 使用LitePal查询数据
  11. Python爬虫获取租房数据
  12. 【历史上的今天】2 月 20 日:Python 问世;Facebook 收购 WhatsApp;DEC 创始人出生
  13. 网站/APP 流量分析、点击流分析、用户访问分析
  14. 阿里云Centos7修改22默认端口
  15. V4L2框架-视频流的停止(VIDIOC_STREAMOFF)
  16. 台式电脑win7旗舰版 怎么调节屏幕亮度 显示器太亮了!
  17. js 26个字母排序
  18. 输入一个18位的身份证号码,从中提取出生日期
  19. [转] 使用 DHTML 与 XML 制作 Ajax 幻灯片
  20. 腾讯游戏人脸识别验证是否会保存用户信息

热门文章

  1. 聊聊php定时计划任务
  2. 【译】让垃圾回收器高效工作(四)
  3. 软件工程 之 动物世界
  4. linux -L -l区别,linux ls -l 详解[转]
  5. python的设计哲学_Python 的设计哲学
  6. mysql 多表既有内连接又有外连接_MySQL 多表查询中的内连接和外连接
  7. 魅族的android m l,Android M 外部存储剖析
  8. mysql触发器运算_在MySQL中使用触发器计算列值?
  9. 从SeekFree的Gitee开源库建立通用MM32开发模板
  10. 生成中文词云图的制作:带有不同的背板