硬件描述语言硬件描述语言Verilog设计经验总结设计经验总结
粗略地看Verilog与C语言有许多相似之处。分号用于结束每个语句,注释符也是相同的,运算符“==”也用来测
试相等性。Verilog的if..then..else语法与C语言的也非常相似,只是Verilog用关键字 begin和end代替了C的大括
号。事实上,关键字begin和end对于单语句块来说是可有可无的,就与C中的大括号用法一样。Verilog和C都对
大小写敏感。
一、硬件描述语言Verilog
当然,硬件和软件的一个重要区别是它们的“运行”方式。硬件设计中用到的许多单元都是并行工作的。一旦设备电源开启,硬
件的每个单元就会一直处于运行状态。虽然根据具体的控制逻辑和数据输入,设备的一些单元可能不会改变它们的输出信号,
但它们还是一直在“运行”中。相反,在同一时刻整个软件设计中只有一小部分(即使是多软件任务也只有一个任务)在执行。如
果只有一个处理器,同一时间点只能有一条指令在执行。软件的其它部分可以被认为处于休眠状态,这与硬件有很大的不同。
变量可能以一个有效值而存在,但大多数时间里它们都不在使用状态。
软硬件的不同行为会直接导致硬件和软件代码编程方式的不同。软件是串行执行的,每一行代码的执行都要等到前一行代码执
行完毕后才能进行(中断的非线性或操作系统的命令除外)。
二、模块(module)
一个Verilog模块的开头是关键字module,紧跟其后的是模块名称和端口列表,端口列表列出了该模块用到的所有输入输出名
称。接下来是端口声明部分。注意:所有的输入输出既出现在模块第一行的端口列表中,也会出现在端口声明(declaration)部
分中。
以下三个模块分别以∶ 结构式(structural)、数据流式(data-flow)及行为式(behavioral)来描述一个二输入与门。
//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;
评论0