FPGA学习---3.IP核使用,Counter IP核

news/2024/11/23 0:14:06/

三 LPM——counter IP核使用

小结:counter(IP核)cin进位输入,clock时钟信号,cout进位输出,q当前计数值

在这里插入图片描述

FPGA设计方式
在这里插入图片描述

调用IP核

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

路径放到prj的ip文件夹下

在这里插入图片描述

名字叫counter就行
在这里插入图片描述

几位的计数器

在这里插入图片描述

计数到多少,4位的记不到100,Clock Enable时钟使能信号,Couter Enable计数使能信号,Carry in/out输入输出都勾上
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下面默认的都不贴

只有一个文件时一定要点add,多个不用了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设为顶层文件,分析和综合一下
在这里插入图片描述
设计时只需要关注端口就行

ip核内部做了很多优化,性能有很大提升

在这里插入图片描述

这个可以看内部结构

写ip核的测试文件

`timescale 1ns/1ns`define clock_period 20module 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 beginrepeat(5)begincin=0;#(`clock_period*5)cin=1;#(`clock_period)cin=0;end#(`clock_period*200)$stop;endendmodule

在这里插入图片描述

加入仿真文件assignments—>setting—>

在这里插入图片描述
在这里插入图片描述
记得把名字复制到上面的test bench name

可以这样将数值从二进制改成unsigned

在这里插入图片描述

改ip核参数

在这里插入图片描述

ip核的位数不变

在这里插入图片描述

改为默认

变成计数到最大

八位计数器

在这里插入图片描述

右边这个应该是q[7:4]

再新建一个模块文件

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(cout0),.clock(clk),.cout(cout),.q(q[7:4]));	endmodule

保存到prj,分析综合,设为顶层文件

新建一个仿真文件

`timescale 1ns/1ns`define clock_period 20module 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 beginrepeat(20)begin//给多少脉冲具体看计数器怎么设置cin = 0;#(`clock_period*5)cin = 1;#(`clock_period)cin = 0;		end#(`clock_period*200);$stop;endendmodule

重新设置仿真文件

在这里插入图片描述

进行仿真

如果将最大计数改为10,八位的记到153(10011001)(99)

总结:实际上都是用的软件官方的ip核的计数器模板,

在这里插入图片描述

例化不一定是在模块文件里,也可以是在仿真文件里,相当于调用库函数


http://www.ppmy.cn/news/401245.html

相关文章

核与线程 CPU 4核8线程 的解释

1、物理CPU: 物理CPU就是计算机上实际配置的CPU个数。在linux上可以打开cat /proc/cpuinfo 来查看,其中的physical id就是每个物理CPU的ID,能找到几个physical id就代表计算机实际有几个CPU。 在linux下可以通过指令 grep ‘physical id’ /proc/cpuinfo | sort -u | wc -l …

10.1 LED灯实验(A7核和M4核)

文章目录 LED灯实验分析原理图芯片手册RCC章节GPIO章节 实现代码A7核gpio.hgpio.cmain.c M4核 实验现象 LED灯实验 分析 原理图 LED灯的丝印为LD1,LD2,LD3 通关原理图,可知三盏灯的引脚为LED1,LED2,LED3 引脚写高电平…

【linux 绑核】CPU 绑核

前言 以下介绍两个用于CPU绑核命令 taskset 适用于已经在运行的程序 numactl 适用于准备运行的程序 目录 1. 命令 taskset 1.1. 查看进程绑核状态 1.2. 指定PID绑核 2. 命令 numactl 2.1. 查看节点信息 2.2. 查看内存访问命中率 2.3. 指定某个节点 2.4. 指定程序绑核CPU 1. 命…

【转载】为什么使用3*3 小卷积核堆叠代替大卷积核

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/ytusdc/article/details/85265057 (1)3x3是最小的能够捕获像素八邻域信息的尺寸。 (2)两个3x3的堆…

3*3卷积核 5*5卷积核到底有多大区别

为了比较3*3卷积核 和 5*5卷积核在性能上到底有多大区别设计了两个网络去进行对比, 1.两个3*3的卷积核,2个池化层,2个全连接层 2.两个5*5的卷积核,2个池化层,2个全连接层 两个网络的收敛标准,权重的初始…

两个3*3的卷积核替代5*5(三个3*3卷积核替代7*7)分析

文章目录 为什么一个5x5的卷积核可以用两个3x3的卷积核来替代一个5*5卷积两个3*3卷积核 为什么一个7x7的卷积核可以用三个个3x3的卷积核来替代一个7*7卷积三个3*3卷积核 优点总结 为什么一个5x5的卷积核可以用两个3x3的卷积核来替代 知道了一个理论,两个3x3的卷积核…

cuda学习(3):核函数

1. 核函数介绍 核函数是cuda编程的关键 通过xxx.cu创建一个cudac程序文件,并把cu交给nvcc编译(nvcc 是nvidia的c编译器,编译cudac程序,是c的超集),才能识别cuda语法 可以看到红框2中,编译.cpp文件用的CXX来做的,编译…

傻白入门芯片设计,SystemVerilog Assertion(SVA)学习(二十一)

目录 一、什么是断言? 二、断言分类? (一)从断言的功能上来说,广义的断言分为四类,分别满足不同的验证需要。 (二)从断言的触发方式上来分,断言又可以分成两大类&…