可编程逻辑器件-6

上传人:第*** 文档编号:55669730 上传时间:2018-10-03 格式:PPT 页数:93 大小:2.62MB
返回 下载 相关 举报
可编程逻辑器件-6_第1页
第1页 / 共93页
可编程逻辑器件-6_第2页
第2页 / 共93页
可编程逻辑器件-6_第3页
第3页 / 共93页
可编程逻辑器件-6_第4页
第4页 / 共93页
可编程逻辑器件-6_第5页
第5页 / 共93页
点击查看更多>>
资源描述

《可编程逻辑器件-6》由会员分享,可在线阅读,更多相关《可编程逻辑器件-6(93页珍藏版)》请在金锄头文库上搜索。

1、6、在系统编程开发软件中用到的Verilog HDL,主要内容,Verilog 语言的特点和基本语法 Verilog模块和电路结构的关系 两种不同的Verilog模块 可综合模块的风格 测试用模块的编写要点 语法要点 设计示例分析,有哪几种硬件描述语言? 各有什么特点?,Verilog HDL - 较多的第三方工具的支持 - 语法结构比VHDL简单 - 学习起来比VHDL容易 - 仿真工具比较好使 - 测试激励模块容易编写,Verilog HDL 的发展历史,有哪几种硬件描述语言? 各有什么特点?,VHDL - 比VerilogHDL早几年成为I EEE标准; - 语法/结构比较严格,因而编写

2、出的 模块风格比较清晰; - 比较适合由较多的设计人员合作完成 的特大型项目(一百万门以上)。,Verilog HDL有什么用处?,在各种抽象层次上描述数字电路 测试各种层次数字电路的行为 设计出正确有效的复杂电路结构,Verilog HDL 的应用方面,ASIC 和FPGA设计师可用它来编写可综合的代码。 描述系统的结构,做高层次的仿真。 验证工程师编写各种层次的测试模块对具体电路设计工程师所设计的模块进行全面细致的验证。 库模型的设计:可以用于描述ASIC 和FPGA的基本单元(Cell)部件,也可以描述复杂的宏单元(Macro Cell)。,Verilog HDL 的抽象级别,语言本身提

3、供了各种层次抽象的表述,可以用详细程度有很大差别的多层次模块组合来描述一个电路系统。 行为级:技术指标和算法的Verilog描述 RTL级:逻辑功能的Verilog描述 门级 :逻辑结构的Verilog描述 开关级:具体的晶体管物理器件的描述,Verilog HDL 的抽象级别,行为级:有关行为和技术指标模块,容易理解; RTL级 :有关逻辑执行步骤的模块,较难理解; 门级 :有关逻辑部件互相连接的模块。很难理解; 开关级:有关物理形状和布局参数的模块,非常难理解。 注解:理解是指对模块整体功能的理解,抽象级别和综合与仿真的关系,行为仿真:行为的验证和验证模块分割的合理性; 前仿真: 即 RT

4、L级仿真,检查有关模块逻辑执行步骤是否正确。 逻辑综合:把RTL级模块或符合综合风格的行为模块转换成门级 。 后仿真: 用门级模型做验证,检查由门的互连构成的逻辑其功能是否正确。 布局布线:在门级模型的基础上加上了布线延时 布局布线后仿真:与真实的电路最接近的验证。,简单的Verilog模块的组成,行为级与门级的不同点 ? 综合与模块的关系是什么?,行为级/RTL级,module muxtwo (out, a, b, sl); input a,b,sl; output out; Reg out; always (sl or a or b) if (!sl) out = a; else out

5、= b; endmodule,a,b,sl,out,行为级/RTL级,这个行为的描述并没有说明如果输入 a 或 b是三态的(高阻时)输出应该是什么,但有具体结构的真实电路是有一定的输出的。 RTL模块的数据流动必须基于时钟。RTL模块在每个时钟的沿时刻,其变量的值必定是精确的。 RTL模块是可综合的,它是行为模块的一个子集合。,门结构级,module muxtwo (out, a, b, sl); input a,b,sl; output out; not u1(ns1,sl); and #1 u2(sela,a,nsl); and #1 u3 (selb,b,sl); or #2 u4(ou

6、t ,sela,selb); endmodule,out,综合器的作用,自动地把符合一定风格的 Verilog 行为模块转变为用门级结构描述的模块。 门级结构描述的模块也是得到Verilog仿真器支持的,模块行为正确与否可以通过仿真验证。,Verilog模块的编写和验证举例,- 8位加法器的设计和验证 - 设计方法的总体印象,Verilog HDL入门,module myadder(clock, reset, a, b, sum); parameter width = 8; input clock, reset; input width-1:0 a, b; output width :0 su

7、m; reg width-1:0 a_reg, b_reg; reg width : 0 sum; always (posedge clock or negedge reset) if (!reset) begin a_reg = b0; b_reg = b0; sum= b0; end,Verilog HDL入门,else begin a_reg = a; b_reg = b; sum = a_reg + b_reg ; end endmodule,Verilog HDL模块的测试,include myadder.v module t; wire 8:0 sumout; reg 7:0 ai

8、n, bin; reg rst, clk; myadder(.clock(clk), .reset(rst), .a(ain), .b(bin), .sum(sumout); initial begin rst = 1;clk = 0; ain = 0; bin=3; #70 rst=0; # 70 rst = 1;end always #50 clk = clk; always (posedge clk) begin #2 ain = ain + 2; #3 bin = bin +5; end endmodule,Verilog HDL测试,由于 t 模块中Verilog HDL语句的功能

9、可以对myadder 模块进行测试 myadder 模块输入了必须的信号: rst,clk,ain,bin 观测该模块的输出:sumout 看一看它是否符合设计要求。,Verilog HDL测试,t 模块中Verilog HDL的语句不用修改,还可以再进行更深入一步的测试。在t模块中把myadder 实例用综合后产生的门级结构的myadder实例模块换上,再进行一次测试,如果加法的运行仍然符合设计要求,与接口配合良好,计算正确,则模块的设计更加接近实现。 myadder 门级实例模块输入了必须的信号: rst,clk,ain,bin 又加上myadder门级实例需要的基本逻辑单元行为库的支持,

10、所以仿真是有实际意义的。可以观测该模块的输出:sumout 。看一看它是否符合设计要求,就可确定设计是否成功。,有延迟的门级结构加法器的波形图,clk,rst,ain,bin,0,3,a-reg,b-reg,x,x,有关Verilog HDL的 几个重要基本概念,综合: 通过工具把用Verilog HDL描述的行为级模块自动转换为用门级电路网表表示的模块的过程。 寄存器传输级Verilog HDL模块:也可称为RTL (Verilog) HDL模块。它是符合特定标准和风格的描述状态转移和变化的 Verilog HDL模块。能用综合器把它转换为门级逻辑。,有关Verilog HDL的 几个重要基

11、本概念,Verilog HDL测试模块: 用Verilog HDL描述的模块,可以用来产生测试信号序列并可以接收被测试模块的信号。用于验证所设计的模块是否能正常运行,往往不可综合成具体门级电路。 Verilog HDL顶层(测试)模块: 同上。,有关Verilog HDL的 几个重要基本概念,布局布线: 把用综合器自动生成的门级网表(EDIF)通过运行一个自动操作的布局布线工具,使其与具体的某种FPGA或某种ASIC工艺库器件对应起来,并加以连接的过程。 Verilog HDL后仿真测试模块: 同3)、4),但被测试的模块至少是一个门级描述的或用具体FPGA(ASIC)库器件(带时间延迟信息)

12、描述的结构型Verilog HDL 模块。,Verilog HDL的语法基础,Verilog 模块的基本构成要素,端口信息 输入/输出说明 逻辑功能描述,Verilog 模块由两部分组成:端口信息和内部功能。 module block1(a, b, c, d, e); input a, b, c; output d, e; assign d = a | ( b endmodule,Verilog HDL模块和接口,a,b,c,d,e,Verilog 模块的结构由在module和endmodule 关键词之间的四个主要部分组成: - 端口信息: module block1(a, b, c, d

13、); - 输入/输出说明 : input a, b, c ; output d ; - 内部信号: wire x; - 功能定义: assign d = a | x ; assign x = ( b endmodule,Verilog HDL模块的结构,在Verilog 模块中有三种方法可以生成逻辑电路: - 用 assign 语句: assign cs = ( a0 end,Verilog HDL模块中的逻辑表示,a,b,c,d,e,如在模块中逻辑功能由下面三个语句块组成 : assign cs = ( a0 end 三条语句是并行的,它们产生独立的逻辑电路; 而在 always 块中: b

14、egin 与 end 之间是顺序执行的。,并行和顺序逻辑关系的表示,Verilog模块中的信号,只有两种主要的信号类型: - 寄存器类型: reg 在always 块中被赋值的信号,往往代表 触发器,但不一定是触发器。 - 连线类型: wire 用 assign 关键词指定的组合逻辑的信号 或连线,Verilog模块中的信号要点,需要注意的是: - 寄存器 ( reg )类型不一定是触发器。 - 它只是在 always 块中赋值的信号。,Verilog中reg与wire的不同点,用寄存器 (reg)类型变量生成组合逻辑举例: module rw1( a, b, out1, out2 ) ; i

15、nput a, b; output out1, out2; reg out1; wire out2; assign out2 = a ; always (b) out1 = b; endmodule,a,out2,BUFF,b,INV,out1,Verilog中reg与wire的不同点,用寄存器 ( reg )类型变量生成触发器的例子: module rw2( clk, d, out1, out2 ) ; input clk, d; output out1, out2; reg out1; wire out2; assign out2 = d end endmodule,Verilog中两种不

16、同的赋值语句,不阻塞(non-blocking) 赋值语句: always (posedge clk) begin b = a ; c = b; end,clk,DFF,c,D,Q,D,Q,a,b,DFF,Verilog中两种不同的赋值语句,阻塞(blocking) 赋值语句: always (posedge clk) begin b = a ; c = b; end,clk,DFF,c,D,Q,a,b,两种不同的赋值语句区别要点,非阻塞(non-blocking) 赋值语句 ( b= a): - 块内的赋值语句同时赋值; - b 的值被赋成新值 a 的操作, 是与块内其他 赋值语句同时完成的; - 建议在可综合风格的模块中使用不阻塞赋值。 阻塞(blocking) 赋值语句 ( b = a): - 完成该赋值语句后才能做下一句的操作; - b 的值立刻被赋成新值 a; - 时序电路中硬件没有对应的电路,因而综合结果未知。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

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