Verilog语法简易教程.ppt

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Quartus工具推荐 这个是用来查看编译生成的RTL级原理图的,也就是说你写的代码所生成的硬件电路。我强烈要求你们多看看RTL级原理图,从硬件角度理解你们写的东西是什么,便于你们形成Verilog编程思想。 Quartus工具推荐 这个工具是用来看状态机的状态流程图的。当你们编写了状态机后,可以通过这个工具来检查状态机的功能是否正确。 Quartus工具推荐 “F1” 对,就是键盘的按键F1!如果你编译出错了,左键点击那个报错,然后用F1看看你为什么错了。Quartus提供强大的帮助系统,有疑问多查阅官方资料。 谢谢观赏 Make Presentation much more fun 语法--条件语句case case与C语言中的switch比较类似,但是具体又有区别。其语法格式如下: case(条件表达式) 分支1:语句块1; 分支2:语句块2; …… default:语句块n; endcase reg [2:0] cnt; case(cnt) 3b000:q=q+1; 3b001:q=q+2; default:q=q; endcase 语法--条件语句case 当几个分支对应的操作相同时,可以将这些分支放在一起,如: reg [2:0] cnt; case(cnt) 3b000,3b001,3b010:q=q+1; 3b011,3b100:q=q+2; default:q=q; endcase 另外,同else一样,default一般不要缺省。 语法--条件语句if与case的区别 最大的区别是,if生成的电路是串行,是有优先级的编码逻辑;而case生成的电路是并行的,各种判定情况的优先级相同。因此,if生成的电路延时较大,占用硬件资源少;case生成的电路延时短,但占用硬件资源多。 语法--循环语句 Verilog中也是有循环语句的,但是不推荐初学者使用。与C不同,Verilog的循环语句是依靠电路的重复生成实现的,而且并不是所有的循环语句都可以综合。 感兴趣的同学可以在深入了解Verilog后自学循环语句。 语法--任务和函数 Verilog中还有两种特殊的语句:任务(task)和函数(function)。这两种语句一般用于组合电路的设计中,可以简化代码结构,但在时序电路的设计中无法使用。 感兴趣的同学可以在深入了解Verilog后自行学习。 语法--模块的概念 模块(module)是Verilog中最基本的概念,也是最常用的基本单元。一个module就是一整块电路实体,一个系统就是由许多个module组成的。 需要注意的是,在Quartus中,一个Verilog HDL文件(*.v)中只能编写一个module,而且文件名必须与module的名字相同。 语法--module的结构 module的基本结构如下: module 模块名 (端口列表) 端口声明 其他声明 模块条目 endmodule 端口声明有3钟:(1)input:输入端口,可以理解为输入脚;(2)output:输出端口,可以理解成输出脚;(3)inout:输入输出端口,可以理解成双向管脚。 语法--module实例:3-8译码器 module decoder3to8(din,dout); input [2:0] din; output [7:0] dout; reg [7:0] dout; always@(din) begin case(din) 3b000:dout=8b0000_0001; 3b001:dout=8b0000_0010; …… 3b111:dout=8b1000_0000; endcase end endmodule 语法*--阻塞与非阻塞的深入理解 前面说过,过程赋值有两种:阻塞赋值“=”和非阻塞赋值“=”。那么它们有什么区别呢? 说的最简单的话,阻塞式赋值左边的变量在被赋予新值前,之后用到该变量的阻塞赋值式都无法执行,而非阻塞赋值则不会。在组合逻辑和时序逻辑电路中都可以这样理解。 语法*--阻塞与非阻塞的深入理解 首先看组合逻辑中的区别,看下面两个例子 always@(a,b,c,d)begin t1=ab; t2=cd; out=t1|t2; end always@(a,b,c,d)begin t1=ab; t2=cd; out=t1|t2; end 当a,b,c,d都从0变为1时,左边out

您可能关注的文档

文档评论(0)

优美的文学 + 关注
实名认证
内容提供者

优美的文学优美的文学优美的文学优美的文学优美的文学

1亿VIP精品文档

相关文档