首页 > 其他分享 >FPGA入门笔记003——计数器IP核调用与验证

FPGA入门笔记003——计数器IP核调用与验证

时间:2023-11-20 09:25:25浏览次数:33  
标签:cout FPGA clk IP counter cin 003 点击 clock

FPGA设计方式主要有三种:

1、原理图(不推荐);

2、Verilog HDL设计方式;

3、IP核输入方式

计数器IP核调用与验证步骤如下:

1、添加IP核文件

打开Quartus II,新建一个项目,名称为counter_ip。

选择Tools->MegaWizard Plug-In Manager。

微信截图_20231119104141

选择第一个选项。

微信截图_20231119104345

在搜索栏中输入COUNTER,单击LPM_COUNTER。

微信截图_20231119104605

点击'...'按钮,选择prj文件夹中的ip文件夹,输入文件名为counter,并点击打开,最后点击next。

微信截图_20231119104813

接下来进入参数配置界面,设置计数器输出位数为4,并选择Up only(增计数模式),点击Next。

微信截图_20231119105248

选择Modulus,并设置最大计数值为10,再选择Carry-in和Carry-out,点击Next。

选项的具体含义如下:

Plain binary:直接计数模式。

Modulus:计数到一个最大值,再自动清零。

Clock Enable:时钟使能信号。

Count Enable:计数使能信号。

Carry-in:进位输入。

Carry-out:进位输出。

微信截图_20231119110217

点击Next。

微信截图_20231119110459

点击Next。

微信截图_20231119110539

点击Finish,至此ip核文件添加完成。

微信截图_20231119110611

2、生成counter.v文件

右键File,点击Add/Remove File in Project...。

微信截图_20231119110838

添加counter.v文件。

微信截图_20231119111137

点击Add,再点击Apply->OK。

微信截图_20231119111339

至此,counter.v文件已生成。

微信截图_20231119111611

3、测试counter.v文件

右键counter.v文件,点击设置为顶层,再点击设计与综合按钮进行测试。

微信截图_20231119111724

菜单栏中选择Tools->Netlist Viewers->RTL Viewer,查看RTL视图。

微信截图_20231119112041

RTL视图如下图所示:

微信截图_20231119112226

4、对计数器进行仿真测试

新建一个Verilog HDL文件,文件名称为counter_tb,并保存在testbench文件夹中。

设置代码如下:

`timescale 1ns/1ns

`define clock_period 20

module counter_tb;        

	reg cin;	//进位输入
	reg clk;	//计数基准时钟
	
	wire cout;	//进位输出
	wire [3:0] q;
	
	counter counter0(
		.cin(cin),
		.clock(clk),
		.cout(cout),
		.q(q)
	);
	
	initial clk = 1;
	always #(`clock_period / 2)clk = ~clk;
	
	//产生脉冲信号
	initial begin
		repeat(5) begin	//重复5次
			cin = 0;
			#(`clock_period * 5)cin = 1;	//低电平保持5个时钟周期
			#(`clock_period)cin = 0;	//高电平保持10个时钟周期
		end
		#(`clock_period * 200);
		$stop;
	end
	
endmodule

设置仿真链,并点击RTL Simulation按钮,结果如下图所示:

微信截图_20231119121438

5、更改IP核参数

选中IP Components,双击LPM_COUNTER。

微信截图_20231119121936

将模式更改为Plain binary(直接计数模式)。

微信截图_20231119122242

将计数器进行级联

1、设置八位级联计数器

通过两个4位计数器进行级联,生成一个8位的计数器。

原理图如下图所示:

微信图片_20231120082526

新建一个Verilog HDL文件,命名为counter_top。

代码如下:

module counter_top(
	cin,
	clk,
	cout,
	q
	);
	
	input cin;
	input clk;
	
	output cout;
	output [7:0]q;
	
	wire cout0;
	
	counter counter0(
		.cin(cin),
		.clock(clk),
		.cout(cout0),
		.q(q[3:0])
	);
	
	counter counter1(
		.cin(cin),
		.clock(clk),
		.cout(cout),
		.q(q[7:4])
	);

endmodule

将该文件保存在rtl文件夹中,设置为顶层文件,并进行分析与综合。

RTL视图如下图所示:

微信截图_20231120083205

2、对计数器进行仿真测试

新建Verilog HDL文件,命名位counter_top_tb,代码如下:

`timescale 1ns/1ns

`define clock_period 20

module counter_top_tb;

	reg cin;	//进位输入
	reg clk;	//计数基准时钟
	
	wire cout;	//进位输出
	wire [7:0] q;
	
	counter_top counter0(
		.cin(cin),
		.clk(clk),
		.cout(cout),
		.q(q)
	);
	
	initial clk = 1;
	always #(`clock_period / 2)clk = ~clk;
	
	//产生脉冲信号
	initial begin
        repeat(300) begin	//重复3次
			cin = 0;
			#(`clock_period * 5)cin = 1;	//低电平保持5个时钟周期
			#(`clock_period)cin = 0;	//高电平保持10个时钟周期
		end
		#(`clock_period * 200);
		$stop;
	end
	
endmodule

将该文件与仿真工具链接,点击RTL Simulation按钮进行时序仿真。

标签:cout,FPGA,clk,IP,counter,cin,003,点击,clock
From: https://www.cnblogs.com/little55/p/17843178.html

相关文章

  • 2023.11.19 NOIP 总结
    考试复盘进场读了下题,T1很简单,并且后面三道题都挺可做的。因为可以任意交换,直接令当前串字典序最小,其它串字典序最大,然后比较一下就完事了。因为字符集大小只有\(26\),直接开桶模拟就可以了。发现不是很好写,想了一下其实只需要判断一下当前串字典序最小的字母的字典序是否大于其......
  • NOIP 游记
    赛前一周想到了一首东方曲子的旋律但是一直想不起来曲名。《非科学的表裏一体》——豚乙女DAY0晚上翻我听过的秘封曲找到了,是科学世纪的少年少女。梦里见到的景色,也将呈列于现实之中。DAY0坐高铁来到了秦皇岛,然后到了先听四亿。大堂经理没让我失望,在hz教练说完“你......
  • NOIP 退役记
    在火车上开写的,因为可能学whk的时候就没时间写了(?(实际上学whk也会有时间回家写吧说起来火车上只写了上面那一段开头。配乐:《ラストオカルティズム~現し世の秘術師》——上海爱丽丝幻乐团原因很简单,我写这篇退役记的时候在听这首歌,感觉挺符合我现在(想象到的)心境的。初......
  • Javerscript 学习(知识点整理)
    一、知识体系:  二、案例整理:(1)需求:实现学生的信息录入可以实现一个个添加,也可删除(2)知识点整理:查找元素: document.getElementById("submit");(按照元素的id查找)document.getElementsByTagName('input');(按照元素名进行查找)箭头函数:letmyFunction=(a,b)=>a*......
  • CSP/NOIP2023 游记
    比赛的事情不想写了。可能就是不会考试吧,各种地方的失误,各种策略的失误,各种没来由的蠢。大概不知道我发生了什么的也看不懂我在乱抱怨什么。如果能力根本就不足以触碰到,如果区区肮脏的败者也想偷取星杯的话,那就不要以希望之名玩弄本就不存在的胜利啊。只可惜,生活终究不是动漫,里......
  • NOIP 2023
    NOIP2023不管怎么样,好像暂时不用退役了...进场前机房同学在看字符串,我奶了一手不会考字符串,然后进场一看abandon,有点想笑。开场看了一下,感觉T1是去年cspT1那种题,然后简单想了一下发现可以直接找出最小次小,大概十几分钟的时候过了样例。然后看T2,感觉和食物链有点像,仔细......
  • NOIP2023
    前情概括:csp爆炸,本次期望不高,目标是两题然后暴力打满。赛时情况:8:00到考场,吹了会水之后就进去了,有点点紧张。来到三楼的时候肚子就开始犯病。直接去厕所发现还要排队。/fn直接去四楼,因为没有手表心里慌的很,回来时已经8:27拿了个水杯就进场了,心砰砰跳。一遍过密码开题,开题顺序......
  • NOIP 2023 挂分日寄
    NOIP2023挂分日寄Day-12023.11.17光速改完前一天的联考T4,进入板子大赛感觉前面的各种板子熟练了不少,好!居然没有忘掉线性求逆元这个神秘东西,一大进步Inv[i]=1ll*(p-p/i)*Inv[p%i]%p线段树也在10分钟左右调完,比较顺,信心++但是最后的什么神秘Z函......
  • NOIP 2023 游记 (demo)
    Day0水水水。。APJ把fnaf电影看了。好像和APJ的期望相差比较大。啥时候普及脑机接口啊。看到有人打3,2,1,遂打。打了两天IN一直都是91万左右。。颁奖典礼,膜拜国际特级大师Su_Zipei,今一您扬向。因为和K8He是一个房间的所以就天然面基了crimson000和Tibrella......
  • NOIP 2023 游记
    游记?游寄!Day-1罕见的周四放假,和大家出去吃了顿自助,本来要去蓝海的,结果前段时间搞活动,便宜,导致人特别多,就临时换成去一家亲了。很多年前去过,感觉还是小时候的样子。边吃边聊,妈的lzy喝大了突然说我不是在睡觉吗,凭空创造了一个新梗/fn/fnDay0终于是不用早起了,一觉睡到九点......