verilog--逻辑仿真的构成及设计举例

1、 模块设计完成之后,我们需要检验功能的正确性,通过设计激励块来完成测试。(可以把激励块理解成一个新的设计块,但是又和原来的设计块存在联系)

将激励块和测试块分开设计是一种良好的设计风格。激励块一般称为测试台。可以使用不同的测试台对设计块进行全面测试。

2、激励块的设计有两种模式。

一种是将激励块作为顶层模块,调用(实例引用)并直接驱动设计块,如图1。顶层为激励块,由它控制clk和reset信号,检查并显示输出信号q。

另一种是在一个虚拟的顶层模块中调用(实例引用)激励块和设计块,激励块和设计块之间通过接口进行交互,如图2。激励块驱动信号d_clk和d-reset,这两个信号则连接到设计块的clk和reset输入端口,激励模块同时检查和显示信号c_q,这个信号连接到输出端口q,顶层模块的作用只是调用(实例引用)设计块和激励块。

    

3、设计举例

☆设计块:我们使用自顶向下的方法设计。

①顶层模块:脉动进位计数器

module ripplp_carry_counter(q,clk,reset);
output  [3:0] q;
input clk, reset;
//调用(实例引用)四个T触发器
T_FF tff0(q[0],clk,reset);
T_FF tff1(q[1],clk,reset);
T_FF tff2(q[2],clk,reset);
T_FF tff3(q[3],clk,reset);
endmodule

②定义模块T_FF

module T_FF(q,clk,reset);
output  q;
input clk, reset;
wire d;
D_FF dff0(q,d,clk,reset);//调用(实例引用)一个D触发器
not n1(d,q);//调用(实例引用)一个非门,非门是verilog语言的内置原语部件
endmodule

③定义模块D触发器

//异步复位D触发器
module D_FF(q,d,clk,reset);
output q;
input d,clk,reset;
reg q;
always @(posedge reset or negedge clk)
 if (reset)
   q<=1‘b0;
 else
   q<=d;
endmodule

通过以上三步,我们按照自顶向下的设计方法完成了设计块。接下来就要对设计块施加激励信号以检验其是否正确,即设计激励块。

☆激励块:激励块可以看做是一个新的模块,但同时又和设计块一一对应。在这一例中按照前面的第一种方法来设计激励块,即在激励块中实例引用设计块。

①激励块的编写

module stimulus;

reg clk;
reg reset;
wire [3:0] q;

//实例引用已经设计好的模块
ripple_carry_counter r1(q,clk, reset);

//控制驱动设计块的时钟信号,时钟周期为10个单位时间
initial
     clk =1‘b0;//把clk设置为0
always
     #5 clk =~clk;//每5个时间单位时钟翻转一次,即时钟周期为10个时间单位

//控制驱动设计块的reset信号
initial
begin
  reset = 1‘b1;
  #15 reset = 1‘b0;
  #180 reset = 1‘b1;
  #10 reset =1‘b0;
  #20 $finish;//终止仿真
end

//监视输出
initial
  $monitor($time," Output q= %d",q);

endmodule

在激励块设计完成之后就可以进行仿真来验证设计块的功能正确性了。

②仿真

在激励块中信号有clk,reset,和计数器的4位输出。

信号clk的重复周期为10个单位;

信号reset在0-15和195至205两个时间区段为1,其余时刻为0;

输出信号q从0开始计数到15;

整个仿真在225个时间单位(此例中每个单位为1ns)终止。

仿真结果如下图所示:

检测输出结果为:

时间: 2024-10-13 17:29:20

verilog--逻辑仿真的构成及设计举例的相关文章

[Verilog]任意整数(奇数,整数)分频器设计, 50%占空比

module div_clk(clk_in, divisor, clk_out); input clk_in; input divisor; output clk_out; reg clk_out = 0; wire clk_in; reg [7 : 0] count = 0; wire [7 : 0] divisor; wire odd; assign odd = divisor & 1; always @(clk_in) begin if (count == 0 && clk_

从头学起Verilog(三):Verilog逻辑设计

引言 经过了组合逻辑和时序逻辑的复习,终于到了Verilog部分.这里主要介绍Verilog一些基础内容,包括结构化模型.TestBench编写和仿真.原语及真值表模型. 这部分内容不多,也都十分基础,大家可以看个乐呵,看个意思,但是有一些细节还是需要注意的. Verilog结构化模型 结构化和语言规则 下图以示例的形式分别说明了1995版和2001/2005版Verilog语法下的结构化模型,两者的不同主要体现在模块输入输出端口的声明中.端口可以是input.output,也可以是inout双

基于Verilog的奇数偶数小数分频器设计

今天呢,由泡泡鱼工作室发布的微信公共号“硬件为王”(微信号:king_hardware)正式上线啦,关注有惊喜哦.在这个普天同庆的美好日子里,小编脑洞大开,决定写一首诗赞美一下我们背后伟大的团队,虽然连上我只有两个人,但丝毫不影响我们的工作热情和创业野心.合抱之木,生于毫末:九层之台,起于垒土:千里之行,始于足下! 首先小编在这里分享一个基于Verilog语言的分频器设计,该分频器实现了奇数.偶数.小数(0.5)分频,可综合,能跑700M左右的时钟,基本能够满足大部分应用需求. 一:背景 前天,

verilog逻辑复制

本文转自:http://www.cnblogs.com/linjie-swust/archive/2012/03/27/FPGA_verilog.html 在FPGA设计中经常使用到逻辑复制,逻辑复制也用在很多场合. 1.    信号驱动级数非常大,扇出很大,需要增加驱动力 逻辑复制最常使用的场合时调整信号的扇出.如果某个信号需要驱动后级很多单元,此时该信号的扇出非常大,那么为了增加这个信号的驱动能力,一种办法就是插入多级Buffer,但是这样虽然能增加驱动能力,但是也增加了这个信号的路径延时.

PHP业务逻辑层和数据访问层设计

以下还是觉得有点抽象 1.面向对象能给我们什么? 进行分析之前,我们先来复习一下面向对象.对象是要进行研究的任何事物.类是具有相同或相似性质的对象的抽象.面向对象的要素:封装.继承.多态.面向对象目的是:如何分配职责. 面向对象设计原则: 单一职责原则 (SRP) 一个类,只有一个引起它变化的原因. 开放-封闭原则 (OCP)(对外)可扩展,(对内)不可修改. 李氏替换原则 (LSP) 子类型必须能够完全替换其父类型. 依赖倒置原则 (DIP) 要依赖于抽象,不要依赖于具体. 接口隔离原则 (I

逻辑漏洞之手机验证码设计缺陷

思路:在找回密码处存在设计缺陷,一般短信验证码为四位,无尝试次数限制,可爆破. 利用burpsuite遍历0000~9999之间的验证码数字,查看返回包及字节长度,绕过短信验证. 以下为某云的漏洞利用列子 原文地址:https://www.cnblogs.com/junsec/p/11357049.html

高效算法设计举例

摘自算法<竞赛入门经典训练指南> 例题 年龄排序(Age Sort,UVa 11462) 给定若干居民的年龄(都是1~100之间的整数),把它们按照从小到大的顺序输出. [输入] 输入包含多组测试用例.每组数据的第一行为整数n(0<n<=2 000 000),即居民总数:下一行包含n个不小于1.不大于100的整数,即各居民的年龄.输入结束标志为n=0. 输入文件约有25mb,而内存限制只有2mb. [输出] 对于每组数据,按照从小到大的顺序输出各居民的年龄,相邻年龄用单个空格隔开.

Lua逻辑and和or的设计和三目运算符

Lua逻辑运算符认为 false 和 nil 是为 false,其他为 true.and和or的运算结果不是 true 和 false,而是和它的两个操作数相关. 即:a and b:如果 a 为 false,则返回 a,否则返回 b a or b:如果 a 为 true,则返回 a,否则返回 b lua三目运算符写法是,a and b or c这里有个问题,就是当b是nil的时候会返回c的值. 版权声明:本文为博主原创文章,未经博主允许不得转载.

CPLD VS FPGA

FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL.GAL.CPLD等可编程器件的基础上进一步发展的产物.它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点.目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简 单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流.这些可编辑元件可以被用来实现一些基本的逻辑门