您的位置:首页 > 其它

读书笔记(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 即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: