{PLD可编程逻辑器件}08PLD与VerilogHDL1)

上传人:卓****库 文档编号:141126416 上传时间:2020-08-04 格式:PPTX 页数:35 大小:653.53KB
返回 下载 相关 举报
{PLD可编程逻辑器件}08PLD与VerilogHDL1)_第1页
第1页 / 共35页
{PLD可编程逻辑器件}08PLD与VerilogHDL1)_第2页
第2页 / 共35页
{PLD可编程逻辑器件}08PLD与VerilogHDL1)_第3页
第3页 / 共35页
{PLD可编程逻辑器件}08PLD与VerilogHDL1)_第4页
第4页 / 共35页
{PLD可编程逻辑器件}08PLD与VerilogHDL1)_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《{PLD可编程逻辑器件}08PLD与VerilogHDL1)》由会员分享,可在线阅读,更多相关《{PLD可编程逻辑器件}08PLD与VerilogHDL1)(35页珍藏版)》请在金锄头文库上搜索。

1、模拟与数字电路Analog and Digital Circuits,08_PLD与Verilog HDL(1),内容提纲,PLD 基本结构 实现组合逻辑电路 Verilog HDL 基本语法规则 变量数据类型 程序基本结构 描述组合逻辑电路,可编程逻辑器件,可编程逻辑器件(Programmable Logic Device,简称PLD)是一种可以由用户定义和设置逻辑功能的器件 与中小规模通用逻辑器件相比,具有集成度高、速度快、功耗低、可靠性高等优点 与其他专用集成电路相比,具有产品开发周期短、用户投资风险小、小批量生产成本低等优势 按集成度PLD可分为 低密度PLD:PROM、PLA、PAL

2、、GAL 高密度PLD:CPLD、FPGA,PLD基本结构,输入电路 提供互补输入变量(原变量和反变量) 与阵列 产生逻辑函数所需的乘积项,或阵列 选择乘积项,形成与或式,实现逻辑函数 输出电路 提供不同的输出方式,与门:,PLD中逻辑符号表示,标记 连接方式,编程连接,固定连接,无连接,空白,=,=,=,或门:,互补输入缓冲器:,低密度PLD的与、或阵列结构,PROM: Programmable Read Only Memory, 可编程只读存储器 PLA: Programmable Logic Array, 可编程逻辑阵列 PAL: Programmable Array Logic, 可编

3、程阵列逻辑 GAL: Gate Array Logic, 门阵列逻辑,示例PROM实现组合逻辑,F1 = AB +AB,F3 = AB,F2 = AB +AB,逻辑图,与阵列,或阵列,示例PLA实现一位全加器,与阵列,或阵列,A,A,B,B,Ci,Ci,A,B,S,Co,Ci,S,Co,示例PAL实现组合逻辑,硬件描述语言概述,HDL ( Hardware Description Languag ) 是一种以文本形式来描述数字系统硬件的结构和行为的语言 可以从多种抽象层次对数字系统建模 两种常用HDL VHDL:1981年由美国国防部组织开发,1987年成为IEEE标准 Verilog HDL

4、:1983年由Gateway Design Automation公司(后被Cadence收购)开发,1995年成为IEEE标准,HDL主要特征,HDL语言既包含一些高级程序设计语言的结构形式,同时也兼顾描述硬件线路连接的具体构件 通过使用结构级或行为级描述可以在不同的抽象层次描述设计 五个抽象层次:系统级、算法级、寄存器传输级、逻辑(门)级、电路(开关)级 HDL语言是并发的,即具有在同一时刻执行多个任务的能力 HDL语言有时序的概念,Verilog HDL与 C语言的比较,虽然Verilog的某些语法与C语言接近,但存在本质上的区别 Verilog是一种硬件语言,最终是为了产生实际的硬件电路

5、或对硬件电路进行仿真 C语言是一种软件语言,是控制硬件来实现某些功能 利用Verilog编程时,要时刻记着:Verilog是硬件描述语言,要将其与硬件电路对应起来,Verilog HDL基本语法,空白符(间隔符) 主要起分隔文本的作用,可以使文本错落有致,便于阅读与修改 包括空格、制表符 、换行符及换页符 注释符 改善程序的可读性,在编译时不起作用 多行注释符:以/*开始到*/结束 单行注释符:以/开始到行尾结束,Verilog HDL基本语法 (续1),关键字 Verilog语言内部已经使用的词,例如,module、endmodule、input、output、wire、reg、and等 其

6、中的字母都是小写,例如Input不是关键字 标识符 用于对象(如模块名、电路的输入与输出端口、变量等)命名 以字母或下划线“_”开始,字母、数字、符号“$”和下划线的组合 字母大小敏感,如Input,iNput可以是不同的标识符 不能与关键词相同,Verilog HDL基本语法 (续2),逻辑值集合 0:低电平、逻辑0或“假” 1:高电平、逻辑1或“真” x/X:不确定的值(未知状态) z/Z:高阻态 常量与符号常量,常量,整数型 十进制数形式表示,例如,30、2 带基数形式表示,格式为: 基数符号:十进制 D/d,二进制 B/b,八进制 O/o,十六进制 H/h 例如,8d101、5o37、

7、8HeD,8b1001_001x 实数型常量 十进制记数法,例如,0.1、2.0、5.67 科学记数法,例如,23.1e2、5E4,符号常量,用参数定义语句定义一个标识符来代表一个常量 常用来定义变量的位宽及延时等 定义格式 parameter 参数名1常量表达式1,参数名2常量表达式2,; 例如:parameter BIT=1, BYTE=8, PI=3.14;,变量数据类型,线网(net )型 :表示元件之间的物理连线 输出值紧随输入值的变化而变化 最常用类型是wire 寄存器(register)型 :表示抽象存储元件 在赋新值以前保持原值 只能在initial或always语句中被赋值

8、最常用类型是reg 定义格式 wire/reg MSB:LSB 变量名1,变量名n; 例如: wire a, b; reg3:0 state;,Verilog HDL程序基本结构,由实现特定功能的模块构成 module 模块名 (端口名1, 端口名2, ); 端口类型说明(input, outout, inout); 参数定义(可选); 数据类型定义(wire, reg等); 实例化低层模块和基本门级元件; 连续赋值语句(assign); 过程块结构(initial和always) 行为描述语句; endmodule,说明部分,功能描述部分 顺序是任意的,VerilogHDL描述组合逻辑电路,

9、组合逻辑电路的门级描述 使用内置的基本门级元件描述 组合逻辑电路的数据流描述 使用连续赋值assign语句描述 组合逻辑电路的行为级描述 使用always结构描述,基本门级元件,多输入门和多输出门,多输入门:允许多个输入,但只有一个输出 and,or,xor,nand,nor,xnor 多输出门:允许有多个输出,但只有一个输入 not,buf,and A1(out, in1, in2, in3);,buf B1(out1, out2, , in);,实例名可忽略,实例名可忽略,三态门,一个输出、一个数据输入和一个控制输入 notif0,notif1,bufif0,bufif1,bufif1 B

10、1(out, in, ctrl);,notif0 N1(out, in, ctrl);,示例 Mux with Primitives,module mux2_1(f, a, b, sel); output f; input a, b, sel; andg1(f1, a, nsel), g2(f2, b, sel); org3(f, f1, f2); notg4(nsel, sel); endmodule,赋值语句,连续赋值语句 assign 变量名= 赋值表达式 只能对线网型变量进行赋值,不能对寄存器型变量进行赋值 仅用于描述组合逻辑 过程赋值语句 变量名= 赋值表达式 只能对寄存器数据类型的

11、变量赋值 在always和initial语句内的赋值 可用于描述组合和时序逻辑,Verilog HDL运算符,示例 Mux with Assign,module mux2_1(f, a, b, sel); output f; input a, b, sel; assign f = (a endmodule,a,b,sel,f,if条件语句,if(表达式) 语句1; if(表达式) 语句1; else 语句2; if(表达式1) 语句1; else if(表达式2)语句2; else if(表达式3)语句3; else if(表达式n)语句n; else 语句n+1;,表达式一般为逻辑表达式或关

12、系表达式 对表达式的值进行判断,若为0,x,z,按假处理;若为1,则按真处理,执行指定语句 if和else后可包含单个或多个语句,多句时用begin-end块语句括起来 if语句嵌套使用时,注意if与else的配对关系,Case条件语句,case (敏感表达式) 值1:语句1; 值2:语句2; 值n:语句n; default: 语句n+1; endcase,条件语句使用要点,描述组合电路时,应注意列出所有条件分支,否则编译器认为条件不满足时,会引进一个记忆单元(锁存器)来保持原值,从而产生时序电路而非组合电路 由于每个变量有4种取值,为包含所有分支,可在if语句后加上 else;在 case语

13、句后加上 default,示例 Mux with Always(If ),module mux2_1(f, a, b, sel); output f; input a, b, sel; reg f; always (a or b or sel) if (sel) f = b; else f = a; endmodule,示例 Mux with Always(Case),module mux2_1(f, a, b, sel); output f; input a, b, sel; reg f; always (a or b or sel) case (sel) 1b1: f = b; defau

14、lt: f = a; endcase endmodule,示例 七段译码器,module decoder4_7(abcdefg,bcd); output 6:0 abcdefg; input 3:0 bcd; reg 6:0 abcdefg; always (bcd) begin case (bcd) 4d0: abcdefg=7b1111110; 4d1: abcdefg=7b0110000; 4d2: abcdefg=7b1101101; 4d3: abcdefg=7b1111001;,示例 七段译码器(续),4d4: abcdefg=7b0110011; 4d5: abcdefg=7b1011011; 4d6: abcdefg=7b1011111; 4d7: abcdefg=7b1110000; 4d8: abcdefg=7b1111111; 4d9: abcdefg=7b1111011; default : abcdefg=7bx; endcase end endmodule,The End,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号