FPGA 学习小组
直播中

alexdos

6年用户 804经验值
擅长:可编程逻辑 电源/新能源 嵌入式技术 模拟技术
私信 关注

【FPGA学习】Verilog HDL 程序基本结构如何表达

模块是 Verilog 的基本描述单位,描述某个设计的功能或结构及其与其他模块通信的外部端口。一个模块的基本语法如下:
  1. module module_name//模块名称
  2. (port_list);//输入输出信号列表
  3. //说明
  4. reg //寄存器
  5. wire//线网
  6. parameter//参数
  7. input//输入信号
  8. output//输出信号
  9. inout//输入输出信号
  10. function//函数
  11. task//任务
  12. . . .//语句
  13. Initial statement
  14. Always statement
  15. Module instantiation//
  16. Gate instantiation//
  17. UDP instantiation//
  18. Continuous assignment//
  19. endmodule

说明部分用于定义不同的项,例如模块描述中使用的寄存器和参数、语句定义设计的功能和结构。说明部分和语句可以放置在模块中的任何地方,但是变量、寄存器、线网和参数等的说明部分必须在使用前出现。为了使模块描述清晰和具有良好的可读性, 最好将所有的说明部分放在语句前。
图 2-6 所示的是一个半加器。
2.jpg
图 2-6 半加器
这个半加器用 Verilog HDL 实现,代码如下:
  1. module HalfAdder(A,B,Sum,Carry) ;
  2. input A,B;
  3. output Sum, Carry;
  4. assign #2 Sum = A ^ B;
  5. assign #5 Carry = A & B;
  6. endmodule

模块的名字是 HalfAdder。模块有 4 个端口:两个输入端口 A 和 B,两个输出端口 Sum 和Carry。由于没有定义端口的位数,所有端口大小都为 1 位;同时由于没有各端口的数据类型说明,这 4 个端口都是线网数据类型。模块包含两条描述半加器数据流行为的连续赋值语句。从这种意义上讲,这些语句在模块中出现的顺序无关紧要,因为这些语句是并发的。每条语句的执行顺序依赖于发生在变量 A 和 B 上的事件。

更多回帖

发帖
×
20
完善资料,
赚取积分