版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、现代的设计方法:现代的设计方法:u 选用合适的选用合适的EDAEDA仿真仿真工具;工具;u 选用合适选用合适电路图输入和电路图输入和HDLHDL编辑工具;编辑工具;u 逐个编写可综合逐个编写可综合HDLHDL模块;模块;u 逐个编写逐个编写HDLHDL测试模块;测试模块;u 逐个做逐个做Verilog HDLVerilog HDL电路逻辑访真;电路逻辑访真;u 编写编写Verilog HDLVerilog HDL总测试模块;总测试模块;u 做系统电路逻辑总仿真;做系统电路逻辑总仿真;u电路的逻辑功能容易理解;电路的逻辑功能容易理解;u便于计算机对逻辑进行分析处理;便于计算机对逻辑进行分析处理;
2、u把逻辑设计与具体电路的实现分成两个独把逻辑设计与具体电路的实现分成两个独立的阶段来操作;立的阶段来操作;u逻辑设计与实现的工艺无关;逻辑设计与实现的工艺无关;u逻辑设计的资源积累可以重复利用;逻辑设计的资源积累可以重复利用;u可以由多人共同更好更快地设计非常复杂可以由多人共同更好更快地设计非常复杂的逻辑电路(几十万门以上的逻辑系统)的逻辑电路(几十万门以上的逻辑系统) VHDL VITAL 系统级 算法级 寄存器传输级 逻辑门级 开关电路级 行为级 的抽象 VerilogHDL 与 VHDL 建 模 能 力 的 比 较 Verilog系统说明系统说明-设计文档设计文档/算法描述算法描述RTL
3、/功能级功能级-Verilog门级门级/结构级结构级-Verilog版图版图/物理级物理级-几何图形几何图形行为综合行为综合综合前仿真综合前仿真逻辑综合逻辑综合综合后仿真综合后仿真版图版图系统说明系统说明-设计文档设计文档/算术描述算术描述RTL/功能级功能级-Verilog门级门级/结构级结构级-Verilog版图版图/物理级物理级-几何图形几何图形详细程度详细程度 低低 高高输入输入/仿真速度仿真速度 高高 低低n 行为级行为级n 用功能块之间的数据流对系统进行描述用功能块之间的数据流对系统进行描述n 在需要时在函数块之间进行调度赋值。在需要时在函数块之间进行调度赋值。n RTL级级/功能
4、级功能级n 用功能块内部或功能块之间的数据流和控制信号描述用功能块内部或功能块之间的数据流和控制信号描述系统系统n 基于一个已定义的时钟的周期来定义系统模型基于一个已定义的时钟的周期来定义系统模型n 结构级结构级/门级门级n 用基本单元用基本单元(primitive)或低层元件或低层元件(component)的连接的连接来描述系统以得到更高的精确性,特别是时序方面。来描述系统以得到更高的精确性,特别是时序方面。n 在综合时用特定工艺和低层元件将在综合时用特定工艺和低层元件将RTL描述映射到门描述映射到门级网表级网表VerilogVerilog HDL HDL顶层(测试)模块顶层(测试)模块:
5、同上。5)5)布局布线布局布线: 把用综合器自动生成的门级网表(EDIF)通过运行一个自动操作的布局布线工具,使其与具体的某种FPGA或某种ASIC工艺库器件对应起来,并加以连接的过程。 6)6)VerilogVerilog HDL HDL后仿真测试模块后仿真测试模块: 同3)、4),但被测试的模块至少是一个门级描述的或用具体FPGA(ASIC)库器件(带时间延迟信息)描述的结构型Verilog HDL 模块。 Verilog HDL行为仿真:行为仿真:行为的验证和验证模块分割的合理性前仿真前仿真 :即 RTL级仿真,检查有关模块逻辑执行步骤是否正确。逻辑综合:逻辑综合:把RTL级模块转换成门
6、级 。 后仿真:后仿真:用门级模型做验证,检查门的互连逻辑其功能是否正确。布局布线:布局布线: 在门级模型的基础上加上了布线延时布局布线后仿真:布局布线后仿真:与真实的电路最接近的验证。absloutabslout 这个行为的描述并没有说明如果输入 a 或 b是三态的(高阻时)输出应该是什么,但有具体结构的真实电路是有一定的输出的。uRTL模块的数据流动必须基于时钟。RTL模块在每个时钟的沿时刻,其变量的值必定是精确的。uRTL模块是可综合的,它是行为模块的一个子集合。outabslselbselansln输入端口:输入端口: input 端口名;模块从外界读取数据的接口,是连线类型n输出端口
7、:输出端口:output 端口名;模块向外界传输数据的接口,是连线或寄存器型n输入输出端口:输入输出端口:inout 端口名;可读取数据也可接收数据的端口,数据是双向的,是连线型Verilog 模块由两部分组成:端口信息和内部功能。模块由两部分组成:端口信息和内部功能。 module block1(a, b, c, d, e); input a, b, c; output d, e; assign d = a | ( b & c) ; assign e = ( b & c ); endmoduleabcdeabcdeabced标识符空白符:在在verilog HDL内部已经使用
8、的词称为关键字或保留字。内部已经使用的词称为关键字或保留字。:用于定义模块名、端口名、连线、信号名等用于定义模块名、端口名、连线、信号名等 。标识符可。标识符可以是任意一组字母、数字、以是任意一组字母、数字、$符号下划线的组合,但标识符符号下划线的组合,但标识符第一个第一个字符字符必须是必须是字母字母或者或者下划线下划线,且字符不能多于,且字符不能多于1024个。此外还个。此外还区分区分大小写大小写。空白符由空格、换行等组成,仅仅用于分隔标识符,在编空白符由空格、换行等组成,仅仅用于分隔标识符,在编译中被忽略。译中被忽略。n缺省位宽时,默认为缺省位宽时,默认为32位数据位数据01XZ0bufb
9、ufbufbufif10、低、伪、逻辑低、地、低、伪、逻辑低、地、VSS、负插入、负插入1 1、高、真、高、真、逻辑逻辑高、电源、高、电源、VDD、正插入、正插入X X、不确定:逻辑冲突无法确定其逻辑值、不确定:逻辑冲突无法确定其逻辑值HiZHiZ、高阻抗、三态、无驱动源、高阻抗、三态、无驱动源 n连接类型变量的种类:连接类型变量的种类: 在为不同工艺的基本元件建立库模型的时候,常常需要用不同在为不同工艺的基本元件建立库模型的时候,常常需要用不同的连接类型来与之对应,使其行为与实际器件一致。常见的有以下的连接类型来与之对应,使其行为与实际器件一致。常见的有以下几种。几种。n如果不明确地说明连接
10、是何种类型,应该是指 wire 类型。 例:wire 7:0a,b; / 位宽为位宽为8的的wire型变量型变量a和和b综合编译综合编译器不支持器不支持的的net类型类型abslselbselansloutreg_areg_selreg_b修改前:修改前:module example(o1, o2, a, b, c, d); input a, b, c, d; output o1, o2; reg c, d; reg o2 and u1(o2, c, d); always (a or b) if (a) o1 = b; else o1 = 0;endmodule修改后:修改后:module e
11、xample(o1, o2, a, b, c, d); input a, b, c, d; output o1, o2;/ reg c, d;/ reg o2 reg o1; and u1(o2, c, d); always (a or b) if (a) o1 = b; else o1 = 0;endmodule例:下表以优先级顺序列出了下表以优先级顺序列出了Verilog操作符。注意操作符。注意“与与”操作符的优先级总是比相操作符的优先级总是比相同类型的同类型的“或或”操作符高。本章将对每个操作符用一个例子作出解释。操作符高。本章将对每个操作符用一个例子作出解释。 最高最高最低最低优先级优
12、先级例如:例如:a=4b010;b=4b0010a+ba*ba/ba%b注意注意:在算术运算中,有一个操作数:在算术运算中,有一个操作数为不确定状态,则运算结果都为不确为不确定状态,则运算结果都为不确定状态定状态。!not&and|orn 逻辑操作符的结果为一位逻辑操作符的结果为一位1,0或或x。n逻辑操作符只对逻辑值运算。逻辑操作符只对逻辑值运算。n如操作数为全如操作数为全0,则其逻辑,则其逻辑值为值为falsen如操作数有一位为如操作数有一位为1,则其,则其逻辑值为逻辑值为truen若操作数若操作数只只包含包含0、x、z,则逻辑值为则逻辑值为x逻辑反操作符将操作数逻辑反操作符将操作
13、数的逻辑值取反。例如,的逻辑值取反。例如,若操作数为全若操作数为全0,则其,则其逻辑值为逻辑值为0,逻辑反操,逻辑反操作值为作值为1。非非&与与|或或异或异或 同或同或 同或同或n 当两个操作数位数不同时,位数少的操作数零扩展到相同当两个操作数位数不同时,位数少的操作数零扩展到相同位数。非是单目操作数的,其他都是双目操作数。位数。非是单目操作数的,其他都是双目操作数。a = 4b1011;b = 8b01010011;c = a | b; / a零扩展为零扩展为 8b00001011说明:n一个模块中可以包含多个initial语句,所有语句都是从0时刻开始执行,而且只能执行一次。nin
14、itial语句常用于测试文本中信号的初始化,生成输入仿真波形,监测信号变化等。ninitial语句也可以使用fork-join语句。建议建议:n3、语句块、语句块例:例: 数据采样模块数据采样模块 4h5 : out = 4b0001; 4h6 : out = 4b0010; 4h7 : out = 4b0011; 4h8 : out = 4b0000; 4h9 : out = 4b0010; 4ha : out = 4b0100; 4hb : out = 4b0110; 4hc : out = 4b0000; 4hd : out = 4b0011; 4he : out = 4b0110; 4
15、hf : out = 4b1001; default : out=bx; endcase endendmodule例:查找表方式实现22 乘法【例例】用用for 语句描述的七人投票表决器语句描述的七人投票表决器【例例】用用for 语句实现语句实现2 个个8 位数相乘位数相乘includeinclude文件文件设计文件设计文件厂家元件厂家元件库文件库文件输入文件:输入文件:激励和期望激励和期望的输出信号的输出信号输出文件:激输出文件:激励和实际输出励和实际输出的信号的信号编译器编译器仿真器仿真器仿真器仿真器n用用Verilog设计的步骤:设计的步骤:n测试平台的组成测试平台的组成激励激励信号信号
16、需要验证的需要验证的设计设计激励信号激励信号和用于验和用于验证的结果证的结果数据数据需要验证的需要验证的设计设计简单的测试平台简单的测试平台复杂的测试平台复杂的测试平台n施加激励施加激励产生激励并加到设计有很多产生激励并加到设计有很多 种方法。常用的方法:种方法。常用的方法:n从一个从一个initial块中施加线激励块中施加线激励n从一个循环或从一个循环或always块施加激励块施加激励n从一个向量或整数数组施加激励从一个向量或整数数组施加激励n记录一个仿真过程,然后在另一个仿真中回放施加激励记录一个仿真过程,然后在另一个仿真中回放施加激励n 线性激励有以下特性:线性激励有以下特性:n 只有变
17、量的值改变时才列出只有变量的值改变时才列出n 易于定义复杂的时序关系易于定义复杂的时序关系n 对一个复杂的测试,测试基准对一个复杂的测试,测试基准(test bench)可能非常大可能非常大module inline_ tb; reg 7: 0 data_ bus, addr; wire 7: 0 results; DUT u1 (results, data_ bus, addr); initial fork data_bus = 8h00; addr = 8h3f; #10 data_ bus = 8h45; #15 addr = 8hf0; #40 data_ bus = 8h0f; #6
18、0 $finish; joinendmodulen 保存在文件中的矢量反过来可以作为激励保存在文件中的矢量反过来可以作为激励module read_file_tb; parameter num_vecs = 256; reg 7:0 data_bus; reg 7:0 stim num_vecs-1:0; integer i; DUT u1 (results, data_bus) initial begin / Vectors are loaded $readmemb (vec. txt, stim); for (i =0; i num_vecs ; i = i + 1) #50 data_b
19、us = stimi; endendmodule/ 激励文件激励文件vec.txt001110000011100100111010001111000011000000101000000110000111100010111000.n 使用矢量文件输入使用矢量文件输入/输出的优点:输出的优点: 激励修改简单激励修改简单 设计反复验证时直接使用工具比较矢量文件。设计反复验证时直接使用工具比较矢量文件。例例1:有启动延时的对称时钟的例子:有启动延时的对称时钟的例子:reg ck;initial begin ck = 0; #( period) forever #( period/2) ck = !ck
20、;endreg go; wire ck;nand #( period/2) u1 (ck, ck, go);initialbegin go = 0; #(period) go = 1;end注意:注意:在行为描述中,在时间0将CK初始化为0;而在结构描述中,直到period/2才影响CK值。当go信号在时间0初始化时,CK值到period/2才变化。可以使用特殊命令force和release立即影响CK值。产生的波形(假定产生的波形(假定period为为20)例例2:有不规则启动延时的不对称时钟的例子:有不规则启动延时的不对称时钟的例子:注意:注意:在行为描述中,CK值立刻被影响;而在结构描述
21、中,在传播延时后才输出正确波形。产生的波形(假定产生的波形(假定period为为20)reg ck;initial begin #(period + 1) ck = 1; #(period/2 1) forever begin #(period/4) ck = 0; #(3*period/4) ck = 1; endendreg go; wire ck;nand #(3*period/4, period/4) u1(ck, ck, go);initial begin #(period/4 + 1) go = 0; #(5*period/4 1) go = 1;end例例3:在:在test bench中使用中使用task可以压缩重复操作,提高代码可以压缩重复操作,提高代码效率。效率。module bus_ctrl_tb; reg 7: 0 data; reg data_valid, data_rd; cpu u1 (data_valid, data,data_rd); initial begin cpu_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 单位管理制度集合大合集人员管理篇
- 单位管理制度汇编大合集人力资源管理
- 《家具导购圣经》课件
- 单位管理制度分享汇编职员管理篇十篇
- 单位管理制度分享大全职工管理十篇
- 2024教科室工作计划
- 单位管理制度呈现合集职工管理篇十篇
- 《投资管理复习》课件
- 《市场考察报告》课件
- 《广告效果的测定》课件
- 刘铁敏《金融专业英语》(第2版)-习题参考答案20
- 《公路工程建设监理》课件
- 2023-2024学年黑龙江省哈尔滨一中高一(上)期末数学试卷
- 2024年管理学理论考核试题及答案
- 地理信息系统试卷及答案
- 干部考察延伸谈话范围
- (新)公共常识知识考试复习题库800题(含答案)
- 叉车维修检验原始记录
- Invoice商业发票模板
- 施工过程三检记录表
- 商务信函中的模糊语言及其翻译策略的中期报告
评论
0/150
提交评论