有时候在复杂系统设计的时候会用遇到让“计数器在某个区间内来回不停递增递减”的问题。
话不多说,我们直接上代码。
以0-10的循环计数为例。
工具:Modelsim, VScode
1.准备工作
首先在电脑上新建三个文件夹,SRC、TB以及SIM,用来放置源代码、仿真文件以及仿真工程文件。
一定不要怕麻烦,特别是新手一定要注意代码的分类工作!良好的分类能够大大的提高工作效率。
刚接触代码量小,几十行代码一个文件就搞定了。但是随着从业时间的增加,工作复杂度的提升,代码的难度也会随之提升,如果不做好分类管理,面对几十个源代码,十几个仿真文件……崩溃是必然的。
请注意:一定不能有中文路径!!
这样是错误的
应该这样修改2.工程建立
- 在src文件中添加一个.v文件,名字自拟,最好能够体现出文件的特性。
module test (
input sys_clk,
input rst_n,
);
reg flag;
reg [7:0] adc_data;
always @(posedge sys_clk or negedge rst_n) begin
if (~rst_n)
flag <= 1'd0;
else
case (flag)
1'd0:
if (adc_data == 8'd9) // -1
flag <= 1'd1;
else
flag <= 1'd0;
1'd1:
if (adc_data == 8'd1) // +1
flag <= 1'd0;
else
flag <= 1'd1;
default: flag <= flag;
endcase
end
always @(posedge sys_clk or negedge rst_n) begin
if (~rst_n) begin
adc_data <= 8'd0;
end
else if (flag == 1'd0)
adc_data <= adc_data + 8'd1;
else if (flag == 1'd1)
adc_data <= adc_data - 8'd1;
else
adc_data <= adc_data;
end
endmodule
- 在tb文件夹中新建文件,给出仿真所需要的激励。我们此次所需的只有时钟和复位。时钟设置为50Mhz,复位1000ns。
`timescale 1 ns /1 ps
module tb_test;
reg sys_clk;
reg rst_n;
test u_tb_test(
.sys_clk (sys_clk),
.rst_n (rst_n)
);
initial begin
sys_clk = 0;
rst_n = 0;
#1000;
rst_n = 1;
#20000;
end
always #10 sys_clk = ~ sys_clk;
endmodule
- 在sim文件夹中新建一个Modelsim仿真工程,添加src,tb中的文件,此过程不再展示。
3.仿真验证
仿真1us,观察波形。实现了0-10直接的循环计数,设计成功。

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
FPGA
+关注
关注
1655文章
22287浏览量
630311 -
仿真分析
+关注
关注
3文章
112浏览量
34139
发布评论请先 登录
相关推荐
热点推荐
频率计数器/定时器 时间间隔计数器的应用领域和范围的深度解析 频率计数器模块
在精密电子测量、科研实验、工业控制等领域,时间间隔的精准测量是保障系统性能与数据可靠性的关键环节。 SYN5620A时间间隔计数器模块 作为一款集成化、高性能的测量单元,凭借其高精度、宽量程、高
如何利用Verilog HDL在FPGA上实现SRAM的读写测试
本篇将详细介绍如何利用Verilog HDL在FPGA上实现SRAM的读写测试。SRAM是一种非易失性存储器,具有高速读取和写入的特点。在F
雷击计数器的种类和综合选型部署解决方案
一、雷击计数器的定义与作用 雷击计数器(Lightning Counter,又称雷电计数器、雷击记录仪)是安装在避雷针、接闪杆、SPD(浪涌保护器)或下引线回路中,用于记录雷击或浪涌事
Texas Instruments CD74HC4040/CD74HCT4040 12级二进制计数器数据手册
Texas Instruments CD74HC4040/CD74HCT4040 12级二进制计数器是控制器触发器的高速计数器级。在每个输入
雷电(雷击)计数器的原理、作用及行业应用解决方案
安全事故。雷电(雷击)计数器作为防雷系统中的重要组成部分,扮演着“记录雷击事件、辅助安全运维”的关键角色,已经成为智能防雷系统中不可或缺的一环。 二、雷电(雷击)计数器的原理 1. 工作原理 雷电计数器主要依靠电磁
MCU定时器/计数器
RISC-V核低功耗MCU通过灵活的定时器架构、低功耗模式适配及硬件级中断优化,在工业控制、智能家居等场景中实现高精度计时与能耗控制的协同设计,满足复杂任务调度与实时响应的双重需求。 一、硬件
KEYSIGHT是德科技53220A台式频率计计数器原安捷伦
KEYSIGHT TECHNOLOGIES 53220A 频率计数器/定时器, 350MHz 12位 100PS 53220A 350MHz通用频率计数器/计时器是一款双通道频率
尘埃粒子计数器有什么特点
在当今对空气质量要求日益严苛的时代,尘埃粒子计数器作为一种高效、准确的检测工具,正逐渐成为众多领域重要的得力助手。它采用激光散射原理,以稳定的气流流速对空气进行采样,当空气中的微粒通过内部光敏
用ADS1234作了一个4通道输入的AD,数据持续递增递减的原因是什么?
14860开始递减,递减到14830的时候又开始递增,发现了一会递增一会递减的最后除了256 还是不怎么稳定 只能求助下看看怎么回事了。之前
发表于 12-31 07:26
智能雷击计数器的综合行业解决方案
智能雷击计数器 是一种用于记录雷击事件发生次数的高科技装置,广泛应用于防雷系统中。与传统的机械式雷击计数器相比,智能雷击计数器不仅能够精确记录雷击次数,还能对雷电参数进行分析,并通过智能通信模块

Verilog实现计数器在某个区间内循环计数,递增递减
评论