赞
踩
目录
完成工程设计之后,通常需要编写对应的测试文件对设计进行功能仿真验证。因为测试文件中对外是只有输入输出端口,并无信号,而测试文件就是通过编写输入信号的形式,连接到设计文件对应的输入端口,通过输出端口来确认逻辑是否正确。时钟又是最最基础的信号,无时钟信号类似手机不联网。本节将结合实际modelsim来讲解测试文件中时钟的写法。
从信号特点看,可分为占空比为50%和非50%,实现语句可分为always语句和forever语句
为方便查看时钟信号,功能很简单,输出信号等于输入信号
-
- module clock(clk_in,clk_out );
- input [7:0] clk_in;
- output [7:0]clk_out;
- assign clk_out=clk_in;
- endmodule
测试代码
-
- `timescale 1ns / 1ns
- module tb_clk( );
- reg [7:0]tb_clkin;
- wire clkout_50_always;
- wire clkout_rand_always;
- wire clkout_50_forever;
- wire clkout_rand_forever;
- parameter PERIOD = 10;
- //always实现占空比为50%的时钟信号
- always
- begin
- tb_clkin[0] = 1'b0;
- #(PERIOD/2) tb_clkin[0] = 1'b1;
- #(PERIOD/2);
- end
- clock dut0(.clk_in(tb_clkin[0]),.clk_out(clkout_50_always));
-
- //always实现指定占空比的时钟信号
- parameter DUTY_CYCLE = 0.7; //占空比为0.7
-
- always begin
- tb_clkin[1] = 1'b0;
- #(PERIOD-(PERIOD*DUTY_CYCLE)) tb_clkin[1] = 1'b1;
- #(PERIOD*DUTY_CYCLE);
- end
-
- clock dut1(.clk_in(tb_clkin[1]),.clk_out(clkout_rand_always));
- //forever实现占空比为50%的时钟信号
- initial
- begin
- tb_clkin[2] = 1'b0;
- #(PERIOD/2);
- forever
- #(PERIOD/2) tb_clkin[2] = ~tb_clkin[2];
- end
- clock dut2(.clk_in(tb_clkin[2]),.clk_out(clkout_50_forever));
- //forever实现指定占空比的时钟信号
- initial
- forever
- begin
- tb_clkin[3] = 1'b0;
- #(PERIOD-(PERIOD*DUTY_CYCLE)) tb_clkin[3] = 1'b1;
- #(PERIOD*DUTY_CYCLE);
- end
- clock dut3(.clk_in(tb_clkin[3] ),.clk_out(clkout_rand_forever));
- endmodule
四种时钟信号如下图,占空比和周期符合设计
Vivado软件language templates
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。