FPGA 12 基础 调用IP核实现8421BCD码计数器

在这里插入图片描述

FPGA 12 调用IP核实现8421BCD码计数器

目的: 使用 IP 核实现和自己编写的8421BCD码一样的功能,便于自己在后续开发的时候,可以考虑使用IP核来实现自己的功能。而不是都自己来编写逻辑函数文件。

1、选中IP核选项

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xiBoHfHj-1627395735525)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302145105756.png)]

2、创建一个IP核模块,共有3个选项

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A8fTDT1k-1627395735527)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302145623457.png)]

3、选择所需要的IP核模块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NvYkOWr1-1627395735529)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302150356101.png)]

选中所选的IP核模块,本次选用的是一个 conter模块进行演示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OLo552dn-1627395735531)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302150448262.png)]

配置IP核选项

通用配置 1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jncKLqQJ-1627395735533)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302150856715.png)]

通用配置 2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-034pQyxh-1627395735534)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302151435239.png)]

通用配置3

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jl0sQRi2-1627395735535)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302151713993.png)]
仿真库(默认即可 —》 直接 next )

总结设置(默认即可)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GWGPyP2p-1627395735536)(FPGA 调用IP核.assets/image-20210302151746140.png)]

点击Yes ,暂时不勾选自动添加ip核

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T5bXvj28-1627395735538)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302152005247.png)]

添加成功效果如下所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9GNu9eZk-1627395735538)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302152852882.png)]

添加 IP核生成的模块到项目中:

1、

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ceeRljpn-1627395735539)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302153024712.png)]

2、

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uyaX4yA6-1627395735540)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302153154678.png)]

3、添加文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WM0wRiYG-1627395735540)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302153307048.png)]

此时可以看到通过IP配置添加的conter.v 模块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ml3cqI9F-1627395735541)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302153726023.png)]

测试与验证

1、设置模块为顶层文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-whqmF3LX-1627395735542)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302154041255.png)]

2、开始编译(Ctrl+ L),看是否有错误

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rs20tNh8-1627395735542)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302154247841.png)]

3、此时可以看一下rtl 视图(芯片内部的结构)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NoBztbFP-1627395735543)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302154506021.png)]

4、双击芯片可以看到内部的电路结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hx3RjGU9-1627395735544)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302154930206.png)]

调用IP核的优势

1、生成模块非常快速

2、内部做过优化代码

3、提高设计效率

编写测试文件

测试文件如下所示:

`timescale  1ns/1ns
`define clock_period 20

module conter_tb ;
reg cin ; 	//进位输入( +1)
reg clk;		//计数基准时钟

wire	cout ;		//进位输出(达到进位输出的时候则发送进位信号)
wire  [3:0]q ;		//4位计数器输出

conter conter0 (
.cin(cin),
.clock(clk),
.cout(cout),
.q(q)
);
initial clk =1 ;
always #(`clock_period/2) clk =~clk ;

initial begin 
	repeat (25) begin	// repeat : 这里表示重复5次
		cin = 0; //先初始化 cin =0 ; 低电平
		#(`clock_period * 5) ;
		cin = 1 ;  //隔5个时钟周期后,cin =1 变为高电平 
		#(`clock_period) ;
		end	
	cin = 0 ;  //隔1个时钟周期后,cin =0 变为低电平 
	#(`clock_period * 200) ;
	$stop ;
end
endmodule

仿真测试效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vYR8sAd1-1627395735545)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302161858914.png)]

修改IP核参数

在这里插入图片描述

开始修改参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xXMv7jlH-1627395735545)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302162954370.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bPR4g8Dd-1627395735546)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302163153708.png)]

更新后,需要再次重新编译文件

再次仿真看测试结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eClTlP8q-1627395735546)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302163613863.png)]

编写一个二进制的代码

``timescale  1ns/1ns
`define clock_period 20

module conter_top_tb ;
reg cin ; 	//进位输入( +1)
reg clk;	//计数基准时钟

wire	cout ;	//进位输出
wire  [7:0]q ;		//计数器输出

conter_top conter_top_0(
	.cin(cin) ,
	.clk(clk) ,
	.cout(cout) ,
	.q(q) 
);

initial clk =1 ;
always #(`clock_period/2) clk =~clk ;

initial begin 
	repeat (320) begin	// repeat : 这里表示重复320次
		cin = 0; //先初始化 cin =0 ; 低电平
		#(`clock_period * 5) cin = 1 ;  //隔5个时钟周期后,cin =1 变为高电平 
		#(`clock_period) 		cin = 0 ;  //隔1个时钟周期后,cin =0 变为低电平 
		end	
		#(`clock_period * 200) ;
		$stop ;
end
endmodule

​ 可以得到一个16进制的9(前四位最大到9)9(后四位最大到9)的数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lQCnlmgy-1627395735547)(E:/Blog_Template/source/_posts/img/blog_img/fpga/image-20210302173809888.png)]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值