- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ch03-Verilog HDL基础与组合电路建模;3.1 Verilog HDL基本语法规则;3.1 Verilog HDL基本语法规则;3.1.1 词法规定 ;任何用Verilog HDL语言描述的“东西”都通过其名字来识别,这个名字被称为标识符。
如源文件名、模块名、端口名、变量名、常量名、实例名等。
标识符可由字母、数字、下划线和$符号构成;但第一个字符必须是字母或下划线,不能是数字或$符号!
在Verilog HDL中变量名是区分大小写的!
合法的名字:
A_99_Z
Reset
_54MHz_Clock$
Module ;关键字——事先定义好的确认符,用来组织语言结构;或者用于定义Verilog HDL提供的门元件(如and,not,or,buf)。
用小写字母定义!
——如always,assign,begin,case,casex,else,end,for,function,if,input,output,repeat,table,time,while,wire
;为了表示数字逻辑电路的逻辑状态,Verilog语言规定了
4种基本的逻辑值。
;;大家有疑问的,可以询问和交流;3.1.3 常量及其表示;3.1.3 常量及其表示;3.1.4 数据类型;wire型数据常用来表示用以assign关键字指定的组合逻辑信号。
Verilog 程序模块中输入、输出信号类型默认时,自动定义为wire型。
wire型信号可以用做任何方程式的输入,也可以用做assign语句或实例元件的输出。
wire a; //定义了一个1位的wire型数据
wire[7:0] b; //定义了一个8位的wire型数据
wire[4:1] c,d; //定义了二个4位的wire型数据
;表3.1.3 线网类型变量及其说明;关于“多重驱动”;3.1.4 数据类型;寄存器变量类型;3.2 Verilog HDL门级建模;基本概念:;Verilog HDL 基本门级元件(Primitive : 原语);6.4.1 多输入门;基本门的调用方法举例:;真值表举例;3.2.2 多输出门;3.2.3 三态门;;module addbit (a, b, ci, sum, co);
input a, b, ci;
output sum, co;
wire a, b, ci, sum, co, n1, n2, n3;
xor u0(n1, a, b,),
u1(sum, n1, ci);
and u2(n2, a, b),
u3(n3, n1, ci);
or (co, n2, n3);
endmodule ;门级描述小结:;3.3 Verilog HDL数据流建模与运算符;;3.3 Verilog HDL数据流建模与运算符;3.3.1 数据流建模;3.3.1 数据流建模;module mux2to1_dataflow(D0, D1, S, Y );
input D0, D1, S;
output Y;
wire Y ;
//下面是逻辑功能描述
assign Y = (~S D0) | (S D1); //表达式左边Y必须是wire型
endmodule ;module mux2x1_df (D0,D1,S,L);
input D0,D1,S;
output L;
assign L = S ? D1 : D0;
endmodule ;例:用数据流建模方法对2线-4线译码器的行为进行描述。 ;module decoder_df (A1,A0,E,Y);
input A1,A0,E;
output [3:0] Y;
assign Y[0] = ~(~A1 ~A0 ~E);
assign Y[1] = ~(~A1 A0 ~E);
assign Y[2] = ~(A1 ~A0 ~E);
assign Y[3] = ~
文档评论(0)