利用IP核设计高性能的计数器

摘要:
LPM与Quartus II_ CounterIP核心进行设计,新项目,调用IP核心,创建新IP核心,并选择LMP_COUNTER,语言类型,输出路径。单击软件中箭头所指的方向键,从左到右切换到IP组件。双击框中的文件以修改IP核心设置。然而,IP核对设置的位数有上限。为了提供更好的方法,提供了一种级联方法来扩展计数值。在IP核心中,将计数模数更改为直接技术模式,创建一个新的Verilog文件,并按如下方式进行编程。至此,基于IP核的计数器设计方法已经完成。

利用Quartus II的LPM_counter IP核进行设计(利用IP核设计可以迅速高效的完成产品的设计)

      

新建工程

利用IP核设计高性能的计数器第1张

调用IP核

利用IP核设计高性能的计数器第2张

创建一个新的IP核

 利用IP核设计高性能的计数器第3张

选择LMP_COUNTER,语言类型,输出路径。

利用IP核设计高性能的计数器第4张

选择希望输出的寄存器是多少位的,计数类型,

 利用IP核设计高性能的计数器第5张

选择计数器类型(直接计数还是以模的形式计数),是否需要时钟使能和计数使能信号、进位链的输入和进位链的输出。

 利用IP核设计高性能的计数器第6张

清零加载等信号

 利用IP核设计高性能的计数器第7张

之后一直next直到finish

利用IP核设计高性能的计数器第8张

 创建成功后的IP核的文件信息

利用IP核设计高性能的计数器第9张

将counter.v文件加载到软件中

利用IP核设计高性能的计数器第10张

打开可以看到其中的接口文件。

利用IP核设计高性能的计数器第11张

把ip_counter设置为顶层文件后进行编译。

利用IP核设计高性能的计数器第12张

编写testbench文件

利用IP核设计高性能的计数器第13张

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

endmodule

 

设置仿真链

利用IP核设计高性能的计数器第14张

运行  仿真,可以看到每隔5个clk有一个cin信号,计数器完成一次计数,到计数到设定的模值10时会产生一次c_out信号,然后计数器重新开始从0开始计数,与设计的期望。

利用IP核设计高性能的计数器第15张

在软件中点击箭头指向的方向键,左右切换显示到IP components,双击方框中的文件可以修改IP核的设置。

 利用IP核设计高性能的计数器第16张

但是,IP核设置的位数是有上限的,为了提供更好的方法,下面提供一种级联的方法对计数值进行拓展。

在IP核中将计数模值改为直接技术模式

利用IP核设计高性能的计数器第17张

新建Verilog文件进行编程如下。

利用IP核设计高性能的计数器第18张

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

 这里的原理是将前一级的c_out作为下一级计数的c_in,此时即将两个计数器级连起来了,这样就将一个四位的计数器转换成了一个八位的计数器。

将这个文件设置为顶层文件

编写testbench如下

利用IP核设计高性能的计数器第19张

 设置仿真脚本

利用IP核设计高性能的计数器第20张

点击仿真工具进行仿真可以看到计数为8个1时输出c_out ,这与我们期望的是一样的。

 利用IP核设计高性能的计数器第21张

至此,基于IP核设计一个计数器的方法就设计完成了。可以对应的将c_out,输出到LED上进行观察,这里就不再实际操作了。

免责声明:文章转载自《利用IP核设计高性能的计数器》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇pyqt 窗口的调用swf文件加密基础(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

pll的ip核调用

Quartus ii的pll ip核调用: 1、先建立好工程。点击“Tools”,接着点击“Mega Wizard Plug-In Manager”。 2、创建一个新的ip核: 2、这里需要的是pll的ip核,所以就搜索“pll”,并选中“ALTPLL”,接着修改成fpga芯片型号,Verilog HDL,还有设置好pll ip核的路径和名称,这里的名称...

FIFO IP核仿真

FIFO IP核仿真 1.FIFO IP核配置 2.FIFO测试逻辑代码 首先往FIFO里面写入512个数据(FIFO深度的一半),然后再开始同时往FIFO里面写入,读出数据。FIFO读和写的时钟域不同,对于不同时钟域的信号应该进行区分,状态机也应该分开来写。 `timescale 1ns /1ps //////////////////////////...

cpu IP核下载列表 (最新全集)

IP核下载列表 (最新全集) 下载必读:- n( R7 z! h: `/ D$ l/ V8 f* J1 c7 }2 e1 v$ |1 @3 V, q; i: B- Z, K& _1 G1. 绝大部分IP来自网络,缺乏足够的测试,仅供大家学习之用。, I: D% Y1 h2 u; R2. IP原作者版权所有,严禁商用。切记!1 }/ t+ b&...

嵌入式FIFO核的调用

 本次设计源码下载地址:http://download.csdn.net/detail/noticeable/9915523 课程目标:学习调用quartus II 软件的FIFO(先进先出)IP核,并通过仿真,了解其时序。 实验现象:通过quartus II 调用FIFO IP核,并进行不同形式的配置,通过仿真验证其接口时序。 知识点:FIFO IP核的...