版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 语法详细讲解VerilogVerilog测试模块的编写测试模块的编写目的:目的: 复习如何编写较复杂的测试文件,对所做的设计复习如何编写较复杂的测试文件,对所做的设计 进行完整的测试和验证。进行完整的测试和验证。 掌握组织模块测试的常用方法;学会编写常用的掌握组织模块测试的常用方法;学会编写常用的 测试代码。测试代码。语法详细讲解 用用VerilogVerilog设计的步骤设计的步骤 注:虚线表示编译器能检查输入文件的可读性和是否存在以及是否允许生成输出文件include文件设计文件厂家元件库文件输入文件:激励和期望的输出信号输出文件:激励和实际输出的信号编译器仿真器仿真器语法详细讲解 测试
2、平台的组成测试平台的组成 激励信号需要验证的设计激励信号和用于验证的结果数据需要验证的设计简单的测试平台复杂的测试平台语法详细讲解 并行块并行块在测试块中常用到在测试块中常用到forkjoin块。用并行块能表示以同一个时间起点算起的多个事块。用并行块能表示以同一个时间起点算起的多个事件的运行,并行地执行复杂的过程结构,如循环或任务。举例说明如下:件的运行,并行地执行复杂的过程结构,如循环或任务。举例说明如下:module inline_tb;reg 7:0 data_bus; initial fork data_bus= 8b00; #10 data_bus = 8h45; /这两个这两个re
3、peat开始执行时间不同,但能同时运行开始执行时间不同,但能同时运行 #20 repeat (10) #10 data_bus = data_bus +1; #25 repeat (5) # 20 data_bus = data_bus 1; #140 data_bua = 8h0f; joinendmodule语法详细讲解并行块并行块上面模块的仿真输出如下:上面模块的仿真输出如下:语法详细讲解语法详细讲解 注:在有些仿真器中,如果设计所用的时钟是由与其相同抽象级别的时钟模型产生的,则仿真器的性能就能得到提高。语法详细讲解语法详细讲解注:这两个时钟模型有些不同,行为描述的模型延迟期间一直是低电
4、平,而门级描述的模型开始延迟有半个周期是不确定的。注:这两个时钟模型也有些不同,行为描述的模型一开始就有确定的电平,而门级描述的模型有延迟, 开始时电平是不确定的。语法详细讲解 语法详细讲解注:这两个时钟模型有些不同,行为描述的模型延迟期间一直是低电平,而门级描述的模型开始延迟有半个周期是不确定的。语法详细讲解怎样使用任务怎样使用任务举例说明如何使用任务:举例说明如何使用任务:module bus_ctrl_tb; reg 7:0 data; reg data_valid, data_rd; cpu ul(data_valid,data,data_rd); initial begin cpu_
5、driver (8b0000_0000); cpu_driver (8b1010_1010); cpu_driver (8b0101_0101); end 语法详细讲解怎样使用任务怎样使用任务task cpu_driver;input 7:0 data_in; begin #30 data_valid =1; wait (data_rd = =1); #20 data = data_in; wait (data_rd= =0); #20 data = 8hzz; #30 data_valid = 0; end endtaskendmodule语法详细讲解 语法详细讲解目标目标语法详细讲解存储器
6、建模存储器建模 ROM ROM的数据存储的数据存储在另外的一个独在另外的一个独立的文件中立的文件中语法详细讲解简单简单RAMRAM建模建模timescale 1ns/1nsmodule mymem(data,addr,read,write); inout 3:0 data; inout 3:0 addr; input read, write; reg 3:0 memory 0:15; assign data=read? memoryaddr:4bz; always (posedge write) memoryaddr=data;endmodule语法详细讲解例:例:语法详细讲解语法详细讲解存储
7、量可变的只读存储器建模存储量可变的只读存储器建模 语法详细讲解存储器的加载存储器的加载语法详细讲解语法详细讲解怎样使用双向口怎样使用双向口语法详细讲解双向口建模双向口建模b2b2b1b1en_a_ben_a_ben_b_aen_b_abus_abus_abus_bbus_b语法详细讲解双向口建模双向口建模 注意注意 : 在上页的例子中,使用在上页的例子中,使用en_a_ben_a_b和和en_b_a en_b_a 来控制元器件来控制元器件bufiflbufifl, ,如果控制信号同时有效,则结果无法确定。如果控制信号同时有效,则结果无法确定。 所以必须把控制信号所以必须把控制信号 en_a_b
8、 en_a_b 和和 en_b_a en_b_a 在时间上分开。在时间上分开。当当en_a_b=1en_a_b=1时,元器件时,元器件b1b1激活,激活,bus_abus_a的值传的值传到到bus_bbus_b上上当当en_b_a=1en_b_a=1时,元器件时,元器件b1b1激活,激活,bus_bbus_b的值传到的值传到bus_abus_a上上语法详细讲解双向口建模双向口建模b2b2b1b1en_a_ben_a_ben_b_aen_b_abus_abus_abus_bbus_b语法详细讲解当当en_a_b = 1en_a_b = 1时,时,bus_abus_a的值传到的值传到bus_bbu
9、s_b上上当当en_b_a = 1en_b_a = 1时,时,bus_bbus_b的值传到的值传到bus_abus_a上上存储器的端口建模:存储器的端口建模:语法详细讲解双向口建模双向口建模当当rdrd等于等于1 1时时dataregdatareg的的值被赋给值被赋给databusdatabus当当wrwr的下降沿到达时,的下降沿到达时,databusdatabus的值被写入的值被写入dataregdatareg测试模块测试模块RAMRAM单元单元数据总线数据总线数据数据寄存寄存器器rdrdwrwr 注意注意 : 上页中存储单元在上页中存储单元在wrwr的下降沿到达时存入数据的下降沿到达时存入
10、数据。上页模块在。上页模块在 wrwr处于高电平时,通过数据总处于高电平时,通过数据总线写入数据,但必须保证线写入数据,但必须保证wrwr的高电平维持时间的高电平维持时间长于数据的写入时间。长于数据的写入时间。 在在rdrd处于高电平时,上述存储单元通过数据总处于高电平时,上述存储单元通过数据总线读出数据。由于此模型为单口存储模型,因线读出数据。由于此模型为单口存储模型,因此此wrwr变低电平时,变低电平时,rdrd不能同时为高电平,否则不能同时为高电平,否则就无法确定存储器的读出就无法确定存储器的读出/ /写入的结果。写入的结果。双向口建模双向口建模语法详细讲解 语法详细讲解 语法详细讲解V
11、erilogVerilog中的高级结构中的高级结构注意:语法详细讲解VerilogVerilog中的高级结构中的高级结构语法详细讲解Verilog Verilog 任务任务 语法详细讲解Verilog Verilog 任务任务 语法详细讲解 Verilog Verilog 任务任务 语法详细讲解 Verilog Verilog 任务任务 语法详细讲解Verilog Verilog 任务任务 语法详细讲解Verilog Verilog 任务任务 语法详细讲解Verilog Verilog 任务任务 语法详细讲解语法详细讲解语法详细讲解Verilog Verilog 函数函数要点要点函数定义不能包
12、含任何定时控制语句。函数定义不能包含任何定时控制语句。函数必须至少有一个输入,但绝不能含有任函数必须至少有一个输入,但绝不能含有任 何输出和总线口;何输出和总线口;一个函数只能返回一个值,该值的变量名与一个函数只能返回一个值,该值的变量名与 函数同名,数据类型默认为函数同名,数据类型默认为regreg类型。类型。传递给函数的变量顺序与函数输入口声明的传递给函数的变量顺序与函数输入口声明的 顺序相同。顺序相同。函数定义必须包含在模块定义之内。函数定义必须包含在模块定义之内。函数不能调用任务,但任务可以调用函数。函数不能调用任务,但任务可以调用函数。函数使函数使VerilogVerilog有更广阔
13、的适用范围。有更广阔的适用范围。虽然函数只能返回一个值,但是它的返回值虽然函数只能返回一个值,但是它的返回值 可以直接赋给一个由多个子信号拼接构成的可以直接赋给一个由多个子信号拼接构成的 信号变量,信号变量, 使其实际等效于产生了多个输出。使其实际等效于产生了多个输出。 o1, o2, o3, o4 = f_or_and(a, b, c, d, e);o1, o2, o3, o4 = f_or_and(a, b, c, d, e);语法详细讲解Verilog Verilog 函数函数 语法详细讲解Verilog Verilog 函数函数语法详细讲解Verilog Verilog 函数函数 语法
14、详细讲解Verilog Verilog 函数函数 语法详细讲解Verilog Verilog 函数函数 语法详细讲解Verilog Verilog 函数函数 语法详细讲解Verilog Verilog 函数函数语法详细讲解命名块命名块语法详细讲解命名块命名块语法详细讲解禁止命名块和任务禁止命名块和任务module do_arith(out, a, b, c, d, e, clk, en_mult);input clk, en_mult;input 7:0 a, b, c, d, e;output 15:0 out;reg 14:0 out; always (posedge clk) begin
15、 : arith_block /*命名名为命名名为arith_block的块的块* reg 3:0 tmp1, tmp2; /*本地变量本地变量* tmp, tmp2 = f_or_and(a, b, c, d, e); / 函数调用函数调用 if(en_mult) multme(tmp1, tmp2, out); /任务调用任务调用 end 语法详细讲解禁止命名块和任务禁止命名块和任务 注意:注意:被取消。语法详细讲解禁止命名块和任务禁止命名块和任务 语法详细讲解语法详细讲解语法详细讲解语法详细讲解:语法详细讲解写到文件中去写到文件中去语法详细讲解语法详细讲解语法详细讲解语法详细讲解有限状态
16、机(有限状态机(FSM)FSM)隐式隐式FSM:语法详细讲解有限状态机(有限状态机(FSM)FSM)显式显式FSM:state Astate A注意:注意:语法详细讲解有限状态机(有限状态机(FSMsFSMs) )语法详细讲解显式有限状态机显式有限状态机状态变量状态变量casecase语句语句0 01 1datain = 0datain = 0datain = 1datain = 1 语法详细讲解显式有限状态机显式有限状态机转到下一个状态转到下一个状态默认状态指针默认状态指针0 01 11 10 01 1识别1111序列clkclkrstrstoutout 语法详细讲解隐式有限状态机隐式有限状
17、态机0 01 11 10 01 1识别1111序列clkclkrstrstoutout语法详细讲解隐式有限状态机隐式有限状态机目标目标 学会怎样使用用户定义的原语来创建逻辑。学会怎样使用用户定义的原语来创建逻辑。 用户定义的原语元件用户定义的原语元件 (UDP) 其行为与其行为与 Verilog 语法中语法中本来就存在的本来就存在的primitive(原语元件)相似,它用一个原语元件)相似,它用一个表格来定义它的逻辑功能。表格来定义它的逻辑功能。语法详细讲解用户定义的原语用户定义的原语语法详细讲解什么是什么是UDPUDP?语法详细讲解什么是什么是UDPUDP?语法详细讲解 UDPUDP的特点的
18、特点语法详细讲解 UDPUDP的特点的特点语法详细讲解 UDPUDP的特点的特点 输入端口的个数输入端口的个数所需内存的字节数所需内存的字节数1-5165717856918710623组合逻辑示例:组合逻辑示例:2-1 多路器多路器语法详细讲解举例说明举例说明原语名原语名输出端口必须为输出端口必须为第一个端口第一个端口注:注:语法详细讲解举例说明举例说明语法详细讲解组合逻辑示例:全加器组合逻辑示例:全加器向上一级进位下一级来的进位语法详细讲解组合逻辑示例:全加器组合逻辑示例:全加器 语法详细讲解组合逻辑示例:全加器组合逻辑示例:全加器语法详细讲解电平敏感的时序逻辑示例:锁存器电平敏感的时序逻辑
19、示例:锁存器注意此寄存器的用法,注意此寄存器的用法,此寄存器用来存储。此寄存器用来存储。输出初始化为输出初始化为 1b1.1b1. ? ? 表示无须考虑输入表示无须考虑输入和当前状态的值和当前状态的值语法详细讲解电平敏感的时序逻辑示例:锁存器电平敏感的时序逻辑示例:锁存器语法详细讲解跳跳边沿敏感的时序逻辑示例:边沿敏感的时序逻辑示例:D D 触发器触发器 语法详细讲解跳跳边沿敏感的时序逻辑示例:边沿敏感的时序逻辑示例:D D 触发器触发器建立时间和保持时间的概念:建立时间和保持时间的概念:语法详细讲解clockholduptimedatasetuptime/setup check is set
20、/clock is the reference/data is being checked for violation/violation reported if Tposedge_clk -Tdata3specify $setup (data, posedge clock, 3);endspecify语法详细讲解 /Hold check is set/clock is the reference/data is being checked for violation/violation reported if Tdata -Tposedge_clk 5specify $hold ( pose
21、dge clock, data, 5);endspecify语法详细讲解/Hold check is set/posedge of clear is the reference/the next negedge of clear is the data_event/violation reported if Tposedge_clk - Tnegedge_clk 6specify $width ( posedge clear, 6);endspecify语法详细讲解 clear语法详细讲解可综合风格的可综合风格的VerilogVerilog建模类型建模类型语法详细讲解不能综合的不能综合的 Ve
22、rilogVerilog结构结构语法详细讲解 语法详细讲解可综合的可综合的过程块过程块明如下:明如下: 语法详细讲解过程块过程块语法详细讲解过程块中寄存器类型的信号变量过程块中寄存器类型的信号变量同步寄存器示例:同步寄存器示例:在下面的例子中,rega 仅用作临时存储器,因此在综合时它将被优化掉。module ex1reg(d, clk, q);input d, clk;output q;reg q, rega; always (posedge clk) begin rega = 0; if(d) rega = 1; q = rega; endendmodule语法详细讲解寄存器寄存器在下面的
23、例子中,用两个在下面的例子中,用两个always块,它们的触发条件是相同的:即块,它们的触发条件是相同的:即用同一时钟沿来处理两个存储元素,这样就可以使综合器在综合过用同一时钟沿来处理两个存储元素,这样就可以使综合器在综合过程中保留程中保留rega,使它不被优化掉。使它不被优化掉。语法详细讲解寄存器寄存器 语法详细讲解寄存器寄存器组合寄存器示例:组合寄存器示例: 语法详细讲解寄存器寄存器 语法详细讲解寄存器寄存器语法详细讲解语法详细讲解 语法详细讲解电平电平敏感列表敏感列表语法详细讲解电平电平敏感列表敏感列表。语法详细讲解电平电平敏感列表敏感列表语法详细讲解连续赋值连续赋值过程连续赋值是在过程块(过程连续赋值是在过程块(always always 和和 initial initial 块块) )内部内部对寄存器类型的变量进行的连续赋值。对寄存器类型的变量进行的连续赋值。语法详细讲解过程连续赋值过程连续赋值条件完整的条件完整的case语句举例:语句举例: 例例1 1 语法详细讲解 CASECASE条件语句条件语句语法详细讲解 CASECASE条件语句条件语句语法详细讲解语法详细讲解语法详细讲解语法详细讲解带缺省项条件完整的带缺省项条件完整的CASECASE语句语句语法详细
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026心源性休克护理业务学习
- 成人烧伤患者经创面动静脉置管护理专家共识解读课件
- 北京大学《高等数学》课件-第1章函数
- 2026年EML行业分析报告及未来发展趋势报告
- 2026年玻璃纤维和玻璃纤维增强塑料制品制造行业分析报告及未来发展趋势报告
- 2026年养老产业行业分析报告及未来发展趋势报告
- 非HIV重症耶氏肺孢子菌肺炎的诊治总结2026
- 2026年聊天机器人行业分析报告及未来发展趋势报告
- 2026年中小型农具行业分析报告及未来发展趋势报告
- 2026年电动胀管机行业分析报告及未来发展趋势报告
- 2026年滁州凤阳大明旅游发展(集团)有限公司招聘导游员(讲解员)15名笔试备考题库及答案详解
- T∕SZSSIA 019-2026 反恐怖防范管理规范 总则
- 24J113-1 内隔墙-轻质条板(一)
- 药食同源食品管理办法实施细则
- 律师事务所内部惩戒制度
- 政治监督培训课件模板
- 桥架培训课件
- 形势与政策课论文题目
- 无线电频谱管理现状与发展趋势
- 《青春之光》教学课件【大单元教学】
- 湖北大数据集团有限公司招聘笔试题库2025
评论
0/150
提交评论