【FPGA & Verilog&Modelsim】 8bitBCD码60计数器

可私信获取整个项目文件

8bit 即有8位二进制

BCD码 ,全称Binary-Coded Decimal,简称BCD码或者二-十进制代码

利用四位二进制(0000-1111)16个中选择10个作为十进制0-9;

常见的BCD码是8421码

本项目使用两组BCD码(每组4bit,共8bit,故称为8bitBCD)(高位0-5,低位0-9)组成0-59计数器

闲话不多,上代码

计数值qout达到60时,cout进位输出,

data是预知术,cin是累加计数使能端

复制代码
module counter60(clk,reset,cin,load,data,qout,cout);

input clk,reset,load,cin;  //时钟,复位,置数,计数有效使能端
input [7:0]data;    //预置数据
output reg[7:0]qout; //计数值输出
output cout;//进位输出

always@(posedge clk)
begin
 if(reset) qout<=0;
 else if(load) qout<=data;
 else if(cin)
 begin
    if(qout[3:0]==9)
	 begin
	  qout[3:0]<=0;
	  if(qout[7:4]==5) qout[7:4]<=0;
	  else
	    qout[7:4]<=qout[7:4]+4'b1;
	 end
	 else qout[3:0]<=qout[3:0]+4'b1;
  end
end
  
assign cout= ((qout==8'h59)&cin) ? 1'b1 :1'b0;

endmodule

`timescale 10ns/1ns
module counter60_tb;

reg clk,reset,load,cin;  //时钟,复位,置数,计数有效使能端
reg [7:0]data;    //预置数据
wire[7:0]qout; //计数值输出
wire cout;//进位输出

parameter DELY = 100;

counter60 U1(
.clk(clk),
.reset(reset),
.cin(cin),
.load(load),
.data(data),
.qout(qout),
.cout(cout)
);

always #(DELY/2) clk=~clk;

initial begin
clk=0;
reset=0;
data=10;
#DELY reset =1;
#DELY reset =0;load=1;
#DELY reset =0;load=0;cin=1;
#(DELY*300)$finish;
end

always@(posedge clk)
begin
 $display($time,,,"clk=%d reset=%d qout=%h",clk,reset,qout);
end
endmodule

modsim端:

可私信获取整个项目文件

相关推荐
南檐巷上学4 小时前
基于FPGA的正弦信号发生器、滤波器的设计(DAC输出点数受限条件下的完整正弦波产生器)
fpga开发·数字信号处理·dsp·dds
嵌入式-老费8 小时前
Linux Camera驱动开发(fpga + csi rx/csi tx)
fpga开发
ALINX技术博客21 小时前
【202601芯动态】全球 FPGA 异构热潮,ALINX 高性能异构新品预告
人工智能·fpga开发·gpu算力·fpga
JJRainbow1 天前
SN75176 芯片设计RS-232 转 RS-485 通信模块设计原理图
stm32·单片机·嵌入式硬件·fpga开发·硬件工程
s9123601011 天前
FPGA眼图
fpga开发
北京青翼科技1 天前
【PCIe732】青翼PCIe采集卡-优质光纤卡- PCIe接口-万兆光纤卡
图像处理·人工智能·fpga开发·智能硬件·嵌入式实时数据库
minglie11 天前
verilog信号命名规范
fpga开发
XINVRY-FPGA1 天前
中阶FPGA效能红线重新划定! AMD第2代Kintex UltraScale+登场,记忆体频宽跃升5倍
嵌入式硬件·fpga开发·硬件工程·dsp开发·fpga
南檐巷上学2 天前
基于FPGA的音频信号监测识别系统
fpga开发·音频·verilog·fpga·傅立叶分析·fft·快速傅里叶变换
Aaron15882 天前
基于RFSOC的数字射频存储技术应用分析
c语言·人工智能·驱动开发·算法·fpga开发·硬件工程·信号处理