- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3 Verlog语法
Verilog HDL 语言入门 什么是Verilog HDL? 硬件描述语言(HDL——Hardware Description Language),用于数字电子系统设计 Verilog HDL vs. C Verilog HDL继承和借鉴了C语言的多种操作符和语法结构 Verilog HDL vs. VHDL 共同点 都是用于逻辑设计的硬件描述语言 不同点 Verilog HDL更易掌握,只需C语言基础,VHDL需要Ada编程基础 系统级抽象VHDL占优势,而Verilog HDL在门级开关电路描述更强 Verilog HDL例子 一个8位全加器 module adder8 (cout, sum, ina, inb, cin); output [7:0] sum; output cout; //cout进位 input [7:0] ina, inb; input cin; assign {cout, sum} = ina + inb + cin; endmodule Verilog HDL例子(continue) 模块module。 可以层次嵌套; 端口定义。 module 模块名(口1,口2,口3,口4,口5,······); I/O说明:Input, output ; 书写格式自由。 一行可以写几个语句,一个语句也可以分多行写; 除endmodule语句外,每个语句的最后必须由分号; 注释。 /*······*/ //······。 练习——改错 module parity(odd_bit,even_bit) input [7:0] data; output odd_bit; output even_bit; wire [7:0] data; wire odd_bit; wire even_bit; assign odd_bit =^data; /* 奇校验输出 assign even_bit = ~data; //偶校验输出 练习——改错 module parity(odd_bit,even_bit) input [7:0] data; output odd_bit; output even_bit; wire [7:0] data; wire odd_bit; wire even_bit; assign odd_bit =^data; /* 奇校验输出 assign even_bit = ~data; //偶校验输出 逻辑功能 Assign语句 assign F = ~(( A B ) | ( C D )); 元件实例化(instantiate) and myand3 (f, a, b, c); Always块 always @(posedge clk or posedge clr) begin if(clr) q=0; else if(en) q=d; end 常量 数字 整数 二进制整数(b或B); 十进制整数(d或D); 十六进制整数(h或H); 八进制整数(o或O)。 x和z值 x——不定值 z——高阻值 参数( Parameter )型 parameter 参数名1=表达式,参数名2=表达式,参数名3=表达式······; 例:parameter sel = 8, code = 8’ha3; //分别定义参数sel为常数8(十进制),参数code为常数a3(十六进制) 定义格式:位宽’进制数字 例:8’ //位宽为8位的二进制 8’hc5 //位宽位8位的十六进制数c5 8’b1001xxxx; //等价于8’h9x 8’b1010zzzz; //等价于8’haz 变量 网络型(Nets)—— wire 硬件电路的物理连接 必须受到驱动器驱动 连续赋值语句assign 门 缺省初值 “Z” 寄存器型(Registers)—— reg 状态保持的元件 重新赋值前保持原值 缺省初值“X” wire格式: wire([n:0]) 数据名1,数据名2,……数据名n; Reg格式: reg ([n:0])数据名1,数据名2,……数据名n; 例: reg a; // 定义一个1位的名为a的reg型数据 reg [3:0
文档评论(0)