2-1 模块

  Verilog语言基本的描述单元----模块,模块是用来描述某个设计的功能或结构,以及它与其它外部模块进行通信的端口。

  module module_name(port_list);
Declarations: //声明
reg, wire, parameter,
input, output, inout,
function, task,...
Statements: //语句
Initial statement
Always statement
Module instantiation
Gate instantiation
UPD instantiation
Continuous assignment
Generate statement
endmodule

2-2 描述风格

2-2-1 延时

  Verilog 的所有延时都是按时间单位来定义的,时间单位声明应该在模块声明之前。

‘timescale 1ns/100ps //延时时间单位1ns,时间精度100ps

2-2-2 描述风格

1、数据流描述----使用连续性赋值语句 assign

assign [delay] DEST = SRC;

*当右边的表达式的操作数无论何时发生变化,右边的表达式都会重新计算,并在指定延时后赋给左边的线网变量。

 ‘timescale 1ns/100ps
module decoder_24(A, B, EN, Q);
input A, B, EN;
output [:] Q;
wire Abar, Bbar;
assign # Abar = ~A;
assign # Bbar = ~B;
assign # Q[] = ~(Abar & Bbar & EN);
assign # Q[] = ~(Abar & B & EN);
assign # Q[] = ~(A & Bbar & EN);
assign # Q[] = ~(A & B & EN);
endmodule

2、行为描述----initial、always

(1)initiial: 只执行一次;

(2)always:总是在循环执行。

所有的initial和always语句都在0时刻并行执行。

 ‘timescale 1ns/100ps

 module adder1(a, b, cin, sum, cout);//一位全加器
input a, b, cin;
output sum, cout; always @(a or b or cin) begin
sum <= (a^b)^cin;
cout <= ((a&cin)|(b&cin)|(a&b));
end
endmodule module test(lr ,rn); //initial示例
output reg lr, rn;
initial
begin
lr = ;
rn = ;
lr = # ;
rn = # ;
end
endmodule

3、结构描述----基于逻辑门电路的设计风格

 //一位全加器

 module adder1(a, b, cin, sum, cout);
input a, b, cin;
output sum, cout;
wire s1, t1, t2, t3;
xor
ux1(s1, a, b),
ux2(sum, s1, cin);
and
tm1(t1, a, b),
tm2(t2, a, cin),
tm3(t3, b, cin);
or
uo(cout, t1, t2, t3);
endmodule //四位全加器 module Adder4(fa, fb, fcin, fsum, fcout);
parameter size = ;
input [size : ] fa, fb;
input fcin;
output [size : ] fsum;
output fcout;
wire [size - : ] ftemp; adder1 //按对应端口名连接
ufa1(.a(fa[]), .b(fb[]), .cin(fcin), .sum(fsum[]), .cout(ftemp[])),
//ufb1(fa[0], fb[0], fcin, fsum[0], ftemp[0]), //按端口顺序连接,下同
ufa2(.a(fa[]), .b(fb[]), .cin(ftemp[]), .sum(fsum[]), .cout(ftemp[])),
ufa3(.a(fa[]), .b(fb[]), .cin(ftemp[]), .sum(fsum[]), .cout(ftemp[])),
ufa4(.a(fa[]), .b(fb[]), .cin(ftemp[]), .sum(fsum[]), .cout(fcout));
endmodule

4、混合设计风格

在模块中,可混合使用前面三种设计风格,这样可以帮助我们更高效地进行设计开发,但要注意不同类型语句的语法使用规范。

最新文章

  1. javascript中的变量
  2. 弹出popwindow 背景变暗
  3. ASP.NET收发邮件
  4. android常用对话框封装
  5. IOS6学习笔记(四)
  6. 《Apache服务之php/perl/cgi语言的支持》RHEL6——服务的优先级
  7. String使用equals方法和==分别比较的是什么?
  8. 网页clientWidth等相关
  9. javaee学习-JSP指令简介
  10. static inner class 什么时候被加载
  11. C#中new和override的区别
  12. PHP 判断数据类型
  13. angularui 自定义选项卡
  14. “茴”字有四种写法,this也是一样
  15. asp.net core 2.0的认证和授权
  16. C# 常用类型校验Validate
  17. GParted: GNOME Partition Editor, sharp weapon to modify disk partitions.
  18. hive中控制文件生产个数
  19. logstash 中多行合并
  20. hdu 5668 Circle 中国剩余定理

热门文章

  1. linux php5.4安装phalcon
  2. stack和heap的区别
  3. 【php实现数据结构】单向链表
  4. hibernate 注释多表 级联操作
  5. Vuejs实战项目步骤一
  6. Luogu P3953 逛公园(最短路+记忆化搜索)
  7. leetcode 448 - 476
  8. Mac OS X中,有三种方式来实现启动项的配置
  9. idea中隐藏.idea文件夹和.iml文件
  10. java.lang.IllegalStateException: 1 matchers expected, 5 recorded.