• verilog学习笔记(2)_一个小module及其tb


    module-ex_cnt

    module ex_cnt(
    	input wire sclk,
    	input wire rst_n,
    	output wire[9:0] cnt 	
    );
    
    reg [9:0] cnt_r;//_r 代表reg
    
    always@(posedge sclk or negedge rst_n)
    	if(rst_n == 1'b0)
    		cnt_r <= 'd0;//'d0代表32位0,然后截取10位
    	else
    		cnt_r <= cnt_r + 1'b1;
    		
    assign cnt = cnt_r;
    endmodule
    
    

    tb-cnt

    `timescale lns/100ps	//单位时标声明 声明时间精度为100ps
    //#100	//#作为延时开始 延时为10nm
    
    module tb_ex_cnt;//声明不需要端口列表
    		//例化模块的时候如果原始模块是输出信号,那么括号内可以为wire变量,亦可以为reg变量
    		reg bt_sclk,tb_rst_n;//激励信号的声明
    		//例化模块的时候如果原始模块是输出信号,那么括号内必须为wire变量	
    		wire [9:0] tb_cnt;//原始模块输出信号连接线声明
    		initial//initial在上电之后仅运行一次 只能给寄存器reg变量赋值
    		begin//begin...end只是在test_bench文件内部顺序执行 
    			tb_sclk <= 0;//这里阻塞赋值,非阻塞赋值都可以
    			tb_rst_n <= 0;//以上两句赋值语句赋值是有先后顺序的,但是延时为0
    			#200  //延时20nm
    			tb_rst_n <= 1;
    		end
    		
    always #10 tb_sclk <= ~tb_sclk;	//循环震荡 震荡周期为20nm
    
    //例化的方法
    //原始模块名字 例化的名字(可以自定义)
    ex_cnt ex_cnt_inst(
    	.sclk(tb_sclk),//.后面的名字是原始模块的端口名字 括号内为测试基地(当前)端口的名字 例化模块的时候如果原始模块是输出信号,那么括号内可以为wire变量,亦可以为reg变量
    	.rst_n(tb_rst_n),
    	.cnt(tb_cnt) //例化模块的时候如果原始模块是输出信号,那么括号内必须为wire变量	
    );
    
    endmodule
    
    
  • 相关阅读:
    web.xml报错
    mysql字符集问题汇总
    查询所有表中的某个数存储过程脚本
    SQL Server生成数据库的数据字典存储过程
    浏览器无法访问虚拟机的服务器
    搭建lnmp环境,nginx的配置文件/etc/nginx/nginx.conf
    在centos6.5下搭建lnmp
    Linux服务器关联Git,通过执行更新脚本实现代码同步
    CentOS yum 安装时错误 Errno 14 Couldn't resolve host 解决办法
    LinqToSQL3
  • 原文地址:https://www.cnblogs.com/maskerk/p/7367387.html
Copyright © 2020-2023  润新知