task里可以使用always语句吗_Verilog学习笔记 (转)

字体大小: 小 中 大

作者: 来源: 日期:2006-07-30 点击:2415

一般认为

Verilog

HDL在系统级抽象方面比VHDL略差一些,而在门级开关电路描述方面比VHDL要强的多

写了第一个verilog程序,是一个加法器内容如下

module adder(count,sum,a,b,cin);

input[2:0] a,b;

input cin;

output count;

output [2:0] sum;

assign{count,sum}=a+b+cin;

endmodule

开始编译出现了几次错误,后来发现给实体的命名和程序中实体要一致而且大小写要一样,整个程序是嵌套再module和endmodule当中的

而其中的注释和C/C++类似,用//和来标明

module compare(equal,a,b);

output equal;

input [1:0] a,b;

assign equal=(a==b)?1:0;//和C语言中的相同

endmodule

verilog的基本设计单元是“模块(BLOCK)”。一个模块由两个部分组成,一部分描述端口,一部分描述逻辑功能,即定义输入是如何影响输出的。如下

module block(a,b,c,d);

input a,b;

output c,d;

assign c=a|b;

assign d=a&b;

endmodule

模块中最重要的部分是逻辑功能定义。有三种方法可以再模块中产生逻辑。

1、用“assign”声明语句

如:assign a=b&c;

2、用实例元件,如同调入库元件一样

如:and and_inst(q,a,b);

3、用“always”块

如:always @(posedge clk or posedge clr) //always块生成了一个带有异步清除端的D触发器。

begin

if(clr) q<=0;

else if(en) q<=d;

end

采用assign语句是最常用的方法之一。“always”块可以用于产生各种逻辑,常用于描述时序逻辑。

Verilog HDL中总共有19种数据类型

4

个最基本的数据类型:integer型、parameter型、reg型和wire型。其他的类型有large型、medium型、scalared型、

time型、small型、tri型、trio型、tril型、triand型、trior型、trireg型、vectored型、wand型和wor

型,以后会有介绍。

一、数字

整数

有二、八、十、十六进制

<位宽>’<进制><数字>,这是一种全面的描述方式

缺省的位宽由具体的机器系统决定,至少是32位

缺省的进制为十进制

x表示不定值,z代表高阻值,z还可以用?代替

4'b10x0 //位宽为4的二进制数从低位数起第二位为不定值

4'b101z //位宽为4的二进制数从低位数起第一位为高阻值

12'dz //位宽为12的十进制数,其值为高阻值

12'd? //同上

8'h4x //位宽为8的十六进制数,其低4位值为不定值

要表示负数的话只需在位宽表达式前加一个减号

4、下划线(underscore_)

可以用在数字之间提高数字的可读性如16'b1010_1011_1111_1010

二、参数(parameter)型

即用parameter来定义一个标识符代表一个常量,称为符号常量,类似于const和define

pi一样。

网络数据类型表示结构实体(例如门)之间的物理连接,不能储存值,而且必须收到驱动器的驱动,如果没有驱动则该变量就是高阻的,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值