读书笔记(Verilog HDL那些事儿_建模篇1)
2016-06-01 17:07
162 查看
读书笔记(Verilog HDL那些事儿_建模篇1)
说明:写代码总感觉不是很好,向前辈学习,提升自己。
感悟:1: 系统 -> 封装 -> 模块 这样的层次结构不只是Verilog,基本所有的代码都是
可以这样划分的。
2: “代码风格”或者“代码结构”的确是需要好好考虑的问题。相同的“代码风格”
便于阅读和维护。
3: 大多数代码设计都是按照数据流先后顺序进行的,因此在各模块实现过程中
使用“仿顺序操作”的确可以使设计思路更清晰,当然,其中的问题就是如何从
千丝万缕的功能中将模块细化,这个过程很费时间,当确定了各个模块的功能,
整个系统构架也就呈现在了眼前,再根据系统构架优化各个模块功能,如此迭代,
终能实现繁杂的系统功能.
进度:完毕(时间问题,只关注编程思想)
整理来自:时间的诗
1、系统建模 模块封装 模块
2、模块封装:低级建模就是这样一回事,早期的建模,我们只是针对每某个硬件资源,建立一个“ 基
础”而已。这个“ 基础”虽然可以调用,但是却不是真正的完成品。如果“ 基础”要成
为完成品,那么该“ 基础”就要执行所谓的“ 封装”。
3、每一个简单的功能模块,可以看似一位员工。
每一个简单的控制模块,可以看似一位领导。
每一个简单的组合模块,可以看似一组小组。
每一个组合模块再组合起来,可以看似一个大组。
每一个大组为某种“ 目的”存在,如果有独立运行的能力,就可以成为部门(接口)。
最后由许多接口组合起来,就成为一个“ 系统”。
这就是“ 低级建模”最基本思路
4、笔者的建模技巧-低级建模,不仅是关心“如何建模”而已?笔者非常执着与“代码风
格”或者“代码结构”。从实验的开始到实验的结束,笔者都是使用同样的“代码风格”。
要如何维护好自己的代码风格,并不是这本笔记讨论的范围,但是笔者很建议读者可以
参考笔者的“代码风格”。
5、单独使用仿顺序操作缺点:
a: 模块的重复,资源的消耗。
b: 建模量多,连线设计繁多。
c: 模块调用的难度。
如果读者有笔者这样的耐性,这样的劳动当然是没有问题啦。但是,实际上笔者也觉得
这样的建模方法非常“猥琐”,而且模块的连线也很困难。所以我们需要另一种“仿顺
序操作”建模的方法,毕竟 4-1 章 和 4-2 章的方法只适合小型的“仿顺序操作”而已。
这个方法既是“命令式的仿顺序操作”。
6、所谓“命令式的仿顺序操作”就是将各个功能模块通过命令调用.
always @ ( posedge or CLK or negedge RSTn ) if( !RSTn ) begin i <= 4'd0; rPin_Out <= 1'b0; isDone <= 1'b0; ...... end ===> else if( Function_Start_Sig[1] ) case( i ) // S 摩斯码产生 ...... 4'd 9: begin isDone <= 1'b1; i <= i + 1'b1; end 4'd10: begin isDone <= 1'b0; i <= 4'd0; endcase ===> else if( Function_Start_Sig[0] ) case( i ) // 0 摩斯码产生 ...... 4'd 9: begin isDone <= 1'b1; i <= i + 1'b1; end 4'd10: begin isDone <= 1'b0; i <= 4'd0; endcase /*************************************************/ 假设我要产生 S 模式码,那么我只要往 Function_Start_Sig 输入 2'b10 即可。
相关文章推荐
- Hadoop总结篇之二--yarn的概况
- Maven引入自定义Jar包
- 将字符串数组清空的操作
- Javamail 两种不同方式分析
- 自动切换横竖屏屏幕
- 软件开发不可与建筑类比
- Eclipse相同变量高亮显示
- 仿android5.0分享控件,Scroller先占半屏,慢慢滑动至全屏
- 详解在bash脚本中如何获取自身路径(转)
- Android Theme 样式 展示
- JS 工作随笔 07 关于JS提交表单的方式和与C#实现保存数据
- 微信开发怎么控制手机返回键问题
- Dubbo高级篇--ActiveMQ的安装与使用(单节点)
- Unity资源加载与释放
- 函数式编程
- js中继承的几种用法总结(apply,call,prototype)
- 取消Android TextView的text的内边距
- 第十四周实践项目2.2-两个成员的类模板
- SQL 左外连接,右外连接,全连接,内连接
- 网站内容禁止复制和粘贴、另存为的js代码