位置:51电子网 » 技术资料 » 其它综合

Verilog中模组(module)的概念

发布时间:2008/6/5 0:00:00 访问次数:682

verilog中的基本单元是模组(module)。
模组代表一些可以用硬体实践的逻辑实体。 例如,一个模组可以是一个逻辑闸、一个三十二位元计数器、一个记忆体子系统、一个机算机系统或是一个用网路相连的多部电脑。
模组中与外界连接端(port)可以是一个位元或数个位元。连接端可以宣告为输入端、输出端或输出入端。

以下介绍verilog语法,用三种不同层级(level)来表示模组的方式。


下面以一个自定的 and2 模组来说明。
它有三个单一位元称为 in1、in2、及 out 的连接端。其中 in1及 in2 为输入,而 out 为输出。其实这个 and2 模组能做的事和 and 闸是一样的。

宜礕从结构式层次定义模组的例子 //structural
module and2 (in1,in2,out);
input in1;
input in2;
output out;
wire in1,in2,out;
and u1 (out,in1,in2);
endmodule



二∶从资料流层次程式定义模组的例子

//data flow

module and2 (in1,in2,out);

input in1;

input in2;

output out;

wire in1,in2,out;

assign out=in1&in2;

endmodule

三∶从行为式层次定义模组的例子

//behavioral

module and2 (in1,in2,out); input in1; input in2; output out; wire in1,in2; reg out; always @(in1 or in2); out=in1 & in2;

endmodule

一个verilog模组包含了关键字(keywords)、名字(names)、文字(literals)、 注解(comments)以及标点符号。verilog语法中大小写与c语言一样,大小写是不一样的,而verilog中所有的关键字均是使用小写。空白、跳格(tab)及换行是用来增加程式的可读性。注解的用法为 /*注解*/。

所有的模组均以关键字module开始,并紧跟著该模组的模组名称、输入输出的串列。
所有的模组均以关键字endmodule结束。
模组名称必须唯宜礎没有重复。
上述三个例子 的模组接著宣告输出及输入的型别为wire。例外的是在行为式模组的例子将其输出宣告为 reg的型别。其实在verilog中所有的输出及输入均预设为wire的型别,因此这些宣告(除了宣告为reg型别的输出外)均可省略。
以上三个模组分别说明三种不同的描述方式∶ 结构式(structural)、资料流程式(data-flow)及行为式(behavioral)。

结构式的描述∶又称逻辑闸层次 -- gate level

在这层次中模组是由逻辑闸连接而成,在这层次的设计工作就好像以前用描绘逻辑闸来设计线路一样。

资料流程式的描述∶ 又称暂存器传送层次 -- register transation level

它是一种模拟组合函式(combinational-functions)的方法。使用这种描述方式,函式可视为一棵有方向性的树(directed-tree)。输入为其树叶,输出为其树根。 当任何输入有所改变时,输出会被重新计算而跟著改变。资料流程式只能用来实践组合函式。 在这个层次中,要说明资料如何在暂存器中储存与传送,如何处理资料。

行为式的描述∶

它是一种使用高阶语言来描述硬体的方式。因verilog提供很普遍及功能强大的描述方式。因此使用行为式所描述的模组其描述与真实的电路可能毫无关连。甚至某些行为式模组可能无费晕硬体实践。这种特性是verilog的优点也是缺点。 在这个层次的设计工作就好像写c语言一样。

(例宜礮中的结构式模组有一个and闸的实例。在(例宜礮中的and与其他如or、nand、nor、not等均为verilog的基本元件(primitive)。这些是verilog语言预先定义好的函式。例如,这个and闸实例会不断地观测其输入。如果输入有任何变化,这个and函式将会重新用新的输入值计算出输入值。

(例二)中的资料流程式模组有一个使用关键字assign的连续设定叙述。

(例三)中的行为式模组有一个使用关键字always的行为式实例。
@(in1or in2) 表示式告诉拟器等待 in1或 in2发生变化。 如果发生变化则下列设定 :

output=in1&in2;


将表示式 in1and in2 的值放置於变数out中。同时,always这个关键字也意味著当这个设定完成时,模拟器将等待下一次 in1或 in2 的变化。也就是说,always区块(block)很像传统程 式语言的无穷回圈。


verilog中的基本单元是模组(module)。
模组代表一些可以用硬体实践的逻辑实体。 例如,一个模组可以是一个逻辑闸、一个三十二位元计数器、一个记忆体子系统、一个机算机系统或是一个用网路相连的多部电脑。
模组中与外界连接端(port)可以是一个位元或数个位元。连接端可以宣告为输入端、输出端或输出入端。

以下介绍verilog语法,用三种不同层级(level)来表示模组的方式。


下面以一个自定的 and2 模组来说明。
它有三个单一位元称为 in1、in2、及 out 的连接端。其中 in1及 in2 为输入,而 out 为输出。其实这个 and2 模组能做的事和 and 闸是一样的。

宜礕从结构式层次定义模组的例子 //structural
module and2 (in1,in2,out);
input in1;
input in2;
output out;
wire in1,in2,out;
and u1 (out,in1,in2);
endmodule



二∶从资料流层次程式定义模组的例子

//data flow

module and2 (in1,in2,out);

input in1;

input in2;

output out;

wire in1,in2,out;

assign out=in1&in2;

endmodule

三∶从行为式层次定义模组的例子

//behavioral

module and2 (in1,in2,out); input in1; input in2; output out; wire in1,in2; reg out; always @(in1 or in2); out=in1 & in2;

endmodule

一个verilog模组包含了关键字(keywords)、名字(names)、文字(literals)、 注解(comments)以及标点符号。verilog语法中大小写与c语言一样,大小写是不一样的,而verilog中所有的关键字均是使用小写。空白、跳格(tab)及换行是用来增加程式的可读性。注解的用法为 /*注解*/。

所有的模组均以关键字module开始,并紧跟著该模组的模组名称、输入输出的串列。
所有的模组均以关键字endmodule结束。
模组名称必须唯宜礎没有重复。
上述三个例子 的模组接著宣告输出及输入的型别为wire。例外的是在行为式模组的例子将其输出宣告为 reg的型别。其实在verilog中所有的输出及输入均预设为wire的型别,因此这些宣告(除了宣告为reg型别的输出外)均可省略。
以上三个模组分别说明三种不同的描述方式∶ 结构式(structural)、资料流程式(data-flow)及行为式(behavioral)。

结构式的描述∶又称逻辑闸层次 -- gate level

在这层次中模组是由逻辑闸连接而成,在这层次的设计工作就好像以前用描绘逻辑闸来设计线路一样。

资料流程式的描述∶ 又称暂存器传送层次 -- register transation level

它是一种模拟组合函式(combinational-functions)的方法。使用这种描述方式,函式可视为一棵有方向性的树(directed-tree)。输入为其树叶,输出为其树根。 当任何输入有所改变时,输出会被重新计算而跟著改变。资料流程式只能用来实践组合函式。 在这个层次中,要说明资料如何在暂存器中储存与传送,如何处理资料。

行为式的描述∶

它是一种使用高阶语言来描述硬体的方式。因verilog提供很普遍及功能强大的描述方式。因此使用行为式所描述的模组其描述与真实的电路可能毫无关连。甚至某些行为式模组可能无费晕硬体实践。这种特性是verilog的优点也是缺点。 在这个层次的设计工作就好像写c语言一样。

(例宜礮中的结构式模组有一个and闸的实例。在(例宜礮中的and与其他如or、nand、nor、not等均为verilog的基本元件(primitive)。这些是verilog语言预先定义好的函式。例如,这个and闸实例会不断地观测其输入。如果输入有任何变化,这个and函式将会重新用新的输入值计算出输入值。

(例二)中的资料流程式模组有一个使用关键字assign的连续设定叙述。

(例三)中的行为式模组有一个使用关键字always的行为式实例。
@(in1or in2) 表示式告诉拟器等待 in1或 in2发生变化。 如果发生变化则下列设定 :

output=in1&in2;


将表示式 in1and in2 的值放置於变数out中。同时,always这个关键字也意味著当这个设定完成时,模拟器将等待下一次 in1或 in2 的变化。也就是说,always区块(block)很像传统程 式语言的无穷回圈。


相关IC型号

热门点击

 

推荐技术资料

罗盘误差及补偿
    造成罗盘误差的主要因素有传感器误差、其他磁材料干扰等。... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!