栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Verilog HDL

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Verilog HDL

文章目录
    • 代码
      • learning.v
        • 注意事项
      • learning.vt
        • 注意事项
    • 生成测试文件vt
    • 仿真
    • 关于reg和wire的设定

代码 learning.v
module learning(input wire iflag,input wire[7:0]i1,i2,output wire[7:0]out);
	add ADD(.flag(iflag),.a(i1),.b(i2),.c(out));
endmodule

module add(input flag,input[7:0]a,b,output reg[7:0]c);
	always @(flag,a,b)
		begin 
			if(flag == 1) c = a + b;
			else c = a * b;
		end
endmodule
注意事项
  1. 需要有一个和文件名同名的模块作为顶层module,有点类似于c++中的main函数;
  2. 在调用模块时,别忘了实例化(ADD);
  3. 传参时,wire给reg或者reg给wire都不影响;
learning.vt
`timescale 1 ps/ 1 ps
module learning_vlg_tst();
	reg [7:0] i1;
	reg [7:0] i2;
	reg iflag;                                          
	wire [7:0] out;
	reg clk;
                      
	learning inp (  
		.i1(i1),
		.i2(i2),
		.iflag(iflag),
		.out(out)
	);
	
	always begin
		#1000 clk = ~clk;
	end
	
	always@(posedge clk)
		begin
			i1 <= i2;
			i2 <= i1;
			iflag = ~iflag;
			$display("i1=%d,i2=%d,flag=%d",i1,i2,iflag);
		end
	
	initial                                                
		begin                                                                                           
		$display("Running testbench");
		clk = 0;
		i1 = 2;
		i2 = 3;
		iflag = 1;
		end                                                               
                                              
endmodule
注意事项
  1. 需要把module实例化,实例化的名字可以随意改动,不一定用系统给的。
  2. 注意仿真锁死问题。
生成测试文件vt

Quartus II中 Tools-Start-Start EDA Netlist Writer

仿真

Assignment-Settings- EDA Tool Setting- Simulation- Test Benches

导入vt文件;

编译;

仿真。

关于reg和wire的设定

在以下两种情况下,务必把数据定义为wire:

  1. 输出(每一个模块的输出都是这样,在顶层文件都要定义为wire);
  2. assign的赋值对象。

在以下两种情况,务必把数据定义为:

  1. always的赋值对象;
  2. initial中的赋值对象。

对于其他而言,比如输入,通常是定义为wire的。

.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/529688.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号