FPGA篮球计分设计
消抖模块
module key_module
(
//输入端口
clk,rst_n,KEY,
//输出端口
key_out
);
//---------------------------------------------------------------------------
//-- 外部端口声明
//---------------------------------------------------------------------------
input clk; //时钟的端口
input rst_n; //复位的端口,低电平复位
input [3:0] KEY; //对应板上的KEY
output [3:0] key_out; //消抖完成输出按键
//---------------------------------------------------------------------------
//-- 内部端口声明
//---------------------------------------------------------------------------
reg [26:0] time_cnt; //用来计数按键延迟的定时计数器
reg [26:0] time_cnt_n; //time_cnt的下一个状态
reg [3:0] key_reg; //用来接收按键信号的寄存器
reg [3:0] key_reg_n; //key_reg的下一个状态
//设置定时器的时间为20ms,计算方法为 (20*10^6)ns / (1/50)ns 50MHz为开发板晶振
parameter SET_TIME_20MS = 27'd1_000_000;
//parameter SET_TIME_20MS = 27'd1_0;
//---------------------------------------------------------------------------
//-- 逻辑功能实现
//---------------------------------------------------------------------------
//时序电路,用来给time_cnt寄存器赋值
always @ (posedge clk, negedge rst_n)
begin
if(!rst_n) //判断复位
time_cnt <= 27'h0; //初始化time_cnt值
else
time_cnt <= time_cnt_n; //用来给time_cnt赋值
end
//组合电路,实现20ms的定时计数器
always @ (*)
begin
if(time_cnt == SET_TIME_20MS) //判断20ms时间
time_cnt_n = 27'h0; //如果到达20ms,定时计数器将会被清零
else
time_cnt_n = time_cnt + 1'b1;//如果未到20ms,定时计数器将会继续累加
end
//时序电路,用来key_reg寄存器赋值
always @ (posedge clk, negedge rst_n)
begin
if(!rst_n) //判断复位
key_reg <= 4'b0000; //初始化key_reg值
else
key_reg <= key_reg_n; //用来给key_reg赋值
end
//组合电路,每20ms接收一次按键的值
always @ (*)
begin
if(time_cnt == SET_TIME_20MS) //判断20ms时间
key_reg_n <= KEY; //如果到达20ms,接收一次按键的值
else
key_reg_n <= key_reg; //如果未到20ms,保持原状态不变
end
assign key_out = key_reg & (~key_reg_n);//判断按键有没有按下
endmodule
分屏模块
module div(clk,ext_rst_n,mclk
);
input clk ;//输入时钟
input ext_rst_n ;//复位端口
output reg mclk ;//输出1Hz
reg [31:0] cnt ;//存放计数器的值
parameter TIME= 32'd5000_0000;//时钟100MHz
//分频模块,使得输入时钟为25MHz输出时钟为1Hz
always@ (posedge clk or negedge ext_rst_n)begin
if(!ext_rst_n)begin
mclk <=1'b0;
cnt <=32'd0;
end
else if(cnt ==TIME-1'b1)begin
mclk <=~mclk;
cnt <=1'b0;
end
else begin
cnt <=cnt + 1'b1;
end
end
endmodule
控制模块
module control(clk,ext_rst_n,switch1,switch2,en_cnt,en_24s
);
input clk; //输入时钟
input ext_rst_n ; //复位信号
input switch1 ; //暂停开关
input switch2 ; //24s使能开关
output reg en_cnt ; //暂停计数使能位
output reg en_24s ; //24s使能位
reg [31:0] cnt ; //存放计数器的值
parameter TIME = 32'd10000_0000;
//数码管特殊状态闪烁计数器模块
always@(posedge clk or negedge ext_rst_n)begin
if(ext_rst_n==1'b0)begin
cnt <=25'd0;
end
else if(cnt ==TIME-1'b1)begin
cnt <=1'b0;
end
else begin
cnt <=cnt + 1'b1;
end
end
//停止计数器计时模块
always @(posedge clk or negedge ext_rst_n)begin
if(ext_rst_n==1'b0)begin
en_cnt<=1'b0;
end
else if(switch1==1'b0)begin
en_cnt<=1'b1;
end
else begin
en_cnt<=1'b0;
end
end
//开启24s倒计时
always@(posedge clk or negedge ext_rst_n)begin
if(ext_rst_n==1'b0)begin
en_24s <=1'b0;
end
else if(switch2==1'b0)begin
en_24s <=1'b1;
end
else begin
en_24s <=1'b0;
end
end
endmodule
12分钟模块
module counter_12min(clk,mclk,ext_rst_n,en_24s,en_cnt,times_12m,led
);
input clk ;//系统时钟
input mclk ;//时钟信号
input ext_rst_n ;//复位信号
input en_24s ;//24s使能位
input en_cnt ;//计数器停止使能位
output reg[15:0]times_12m ;//15-12分高位 11-8 分低位 7-4秒高位 3-0秒低位
output led ;//led指示状态
assign led =(times_12m==16'h0000);
//计数器模块高位 分钟计时
always@(posedge mclk or negedge ext_rst_n)begin
if(!ext_rst_n)begin
times_12m[15:12] <=4'h1;
end
else if(en_24s==1'b1)begin
times_12m[15:12] <=4'h1;
end
else if(en_cnt==1'b1)begin
times_12m[15:12] <=times_12m[15:12];
end
else if({times_12m[15:12],times_12m[11:8]}==8'h00)begin
times_12m[15:12] <=4'h0;
end
else if({times_12m[7:4],times_12m[3:0]}==8'h00) begin
if(times_12m[11:8]==4'h0)begin
times_12m[15:12] <=times_12m[15:12]-1'b1;
end
else begin
times_12m[15:12] <=times_12m[15:12];
end
end
else begin
times_12m[15:12] <=times_12m[15:12];
end
end
//计数器模块低位 分钟计时
always@(posedge mclk or negedge ext_rst_n)begin
if(!ext_rst_n)begin
times_12m[11:8] <=4'h1;
end
else if(en_24s==1'b1)begin
times_12m[11:8] <=4'h1;
end
else if(en_cnt==1'b1)begin
times_12m[11:8] <=times_12m[11:8];
end
else if({times_12m[15:12],times_12m[11:8]}==8'h00)begin
times_12m[11:8] <=4'h0;
end
else if({times_12m[7:4],times_12m[3:0]}==8'h00) begin
if(times_12m[11:8]==4'h0)begin
times_12m[11:8] <=4'h9;
end
else begin
times_12m[11:8] <=times_12m[11:8]-1'b1;
end
end
else begin
times_12m[11:8] <=times_12m[11:8];
end
end
//计数器模块高位 秒计时
always@(posedge mclk or negedge ext_rst_n)
begin
if(!ext_rst_n)begin
times_12m[7:4] <=4'h5;
end
else if(en_24s==1'b1)begin
times_12m[7:4] <=4'h5;
end
else if(en_cnt==1'b1)begin
times_12m[7:4] <=times_12m[7:4];
end
else if({times_12m[7:4],times_12m[3:0]}==8'h00)begin
if({times_12m[15:12],times_12m[11:8]}==8'h00)begin
times_12m[7:4] <=4'h0;
end
else begin
times_12m[7:4] <=4'h5;
end
end
else if(times_12m[3:0]==4'h0)begin
times_12m[7:4] <=times_12m[7:4]-1'b1;
end
else begin
times_12m[7:4] <=times_12m[7:4];
end
end
//计数器模块低位 秒计时
always@(posedge mclk or negedge ext_rst_n)begin
if(!ext_rst_n)begin
times_12m[3:0] <=4'h9;
end
else if(en_24s==1'b1)begin
times_12m[3:0] <=4'h9;
end
else if(en_cnt==1'b1)begin
times_12m[3:0] <=times_12m[3:0];
end
else if({times_12m[7:4],times_12m[3:0]}==8'h00) begin
if({times_12m[15:12],times_12m[11:8]}==8'h00)begin
times_12m[3:0] <=4'h0;
end
else begin
times_12m[3:0] <=4'h9;
end
end
else if(times_12m[3:0]==4'h0)begin
times_12m[3:0] <=4'h9;
end
else begin
times_12m[3:0] <=times_12m[3:0]-1'b1;
end
end
endmodule
24秒模块
module counter_24(clk,mclk,ext_rst_n,en_24s,en_cnt,times_24s,led
);
input clk ;//系统时钟
input mclk ;//时钟信号
input ext_rst_n ;//复位信号
input en_24s ;//24s使能位
input en_cnt ;//计数器停止使能位
output reg [15:0] times_24s ;
output led ;//led指示状态
assign led =(times_24s==16'h0000);
reg [31:0] cnt ;//存放计数器的值
parameter TIME= 32'd10000_0000;
always@ (posedge clk or negedge ext_rst_n)begin
if(!ext_rst_n)begin
cnt <=32'd0;
end
else if(cnt ==TIME-1'b1)begin
cnt <=1'b0;
end
else begin
cnt <=cnt + 1'b1;
end
end
//计数器模块高位 秒计时(99)
always@(posedge clk or negedge ext_rst_n)begin
if(!ext_rst_n)begin
times_24s[7:4] <=4'h9;
end
else if(en_24s==1'b0)begin
times_24s[7:4] <=4'h9;
end
else if(en_cnt==1'b1)begin
times_24s[7:4] <=times_24s[7:4];
end
else if(cnt%(TIME/100)==0)begin
if({times_24s[7:4],times_24s[3:0]}==8'h00)begin
if({times_24s[15:12],times_24s[11:8]}==8'h00)begin
times_24s[7:4] <=4'h0;
end
else begin
times_24s[7:4] <=4'h9;
end
end
else if(times_24s[3:0]==4'h0)begin
times_24s[7:4] <=times_24s[7:4]-1'b1;
end
else begin
times_24s[7:4] <=times_24s[7:4];
end
end
else begin
times_24s[7:4] <=times_24s[7:4];
end
end
//计数器模块低位 秒计时(99)
always@(posedge clk or negedge ext_rst_n)begin
if(!ext_rst_n)begin
times_24s[3:0] <=4'h9;
end
else if(en_24s==1'b0)begin
times_24s[3:0] <=4'h9;
end
else if(en_cnt==1'b1)begin
times_24s[3:0] <=times_24s[3:0];
end
else if(cnt%(TIME/100)==0)begin
if({times_24s[7:4],times_24s[3:0]}==8'h00) begin
if({times_24s[15:12],times_24s[11:8]}==8'h00)begin
times_24s[3:0] <=4'h0;
end
else begin
times_24s[3:0] <=4'h9;
end
end
else if(times_24s[3:0]==4'h0)begin
times_24s[3:0] <=4'h9;
end
else begin
times_24s[3:0] <=times_24s[3:0]-1'b1;
end
end
else begin
times_24s[3:0] <=times_24s[3:0];
end
end
//计数器模块高位 秒计时
always@(posedge mclk or negedge ext_rst_n)
begin
if(!ext_rst_n)begin
times_24s[15:12] <=4'h2;
end
else if(en_24s==1'b0)begin
times_24s[15:12] <=4'h2;
end
else if(en_cnt==1'b1)begin
times_24s[15:12] <=times_24s[15:12];
end
else if({times_24s[15:12],times_24s[11:8]}==8'h00)begin
times_24s[15:12] <=4'h0;
end
else if(times_24s[11:8]==4'h0)begin
times_24s[15:12] <=times_24s[15:12]-1'b1;
end
else begin
times_24s[15:12] <=times_24s[15:12];
end
end
//计数器模块低位 秒计时
always@(posedge mclk or negedge ext_rst_n)begin
if(!ext_rst_n)begin
times_24s[11:8] <=4'h3;
end
else if(en_24s==1'b0)begin
times_24s[11:8] <=4'h3;
end
else if(en_cnt==1'b1)begin
times_24s[11:8] <=times_24s[11:8];
end
else if({times_24s[15:12],times_24s[11:8]}==8'h00) begin
times_24s[11:8] <=4'h0;
end
else if(times_24s[11:8]==4'h0)begin
times_24s[11:8] <=4'h9;
end
else begin
times_24s[11:8] <=times_24s[11:8]-1'b1;
end
end
endmodule
计分模块
module soring(clk,ext_rst_n,key_press,en_sore,sore,led
);
input clk ;//时钟信号
input ext_rst_n ;//复位信号
/* input key_down ;//切换记分
input key_left ;//1分
input key_entr ;//2分
input key_righ ;//3分 */
input en_sore ;//积分使能位
input [3:0] key_press ;
output [15:0] sore ;//15-8 7-0分别为两个队的分数
output reg [1:0] led ;//
//计分标志模块
reg sore_f;
always@(posedge clk or negedge ext_rst_n)begin
if(ext_rst_n==1'b0)begin
sore_f<=1'b0;
end
else if(en_sore==1'b0)begin
sore_f<=1'b0;
end
else if(key_press[3]==1'b1)begin
sore_f<=~sore_f;
end
else begin
sore_f<=sore_f;
end
end
//led指示模块
always@(posedge clk or negedge ext_rst_n)begin
if(ext_rst_n==1'b0)begin
led<=2'b11;
end
else if(en_sore==1'b0)begin
led<=led;
end
else if(sore_f==1'b0)begin
led<=2'b10;
end
else begin
led<=2'b01;
end
end
//第一队比分
reg [7:0] sore_1;
assign sore[15:12]=sore_1/10;
assign sore[11:8]=sore_1%10;
always@(posedge clk or negedge ext_rst_n)begin
if(ext_rst_n==1'b0)begin
sore_1<=8'h00;
end
else if(en_sore==1'b0)begin
sore_1<=sore_1;
end
else if(sore_1==8'd99)begin
sore_1<=8'h00;
end
else if(key_press[0]==1'b1&&sore_f==1'b0)begin
sore_1<=sore_1+1'b1;
end
else if(key_press[1]==1'b1&&sore_f==1'b0)begin
sore_1<=sore_1+2'b10;
end
else if(key_press[2]==1'b1&&sore_f==1'b0)begin
sore_1<=sore_1+2'b11;
end
else begin
sore_1<=sore_1;
end
end
//第二队比分
reg [7:0] sore_2;
assign sore[7:4]=sore_2/10;
assign sore[3:0]=sore_2%10;
always@(posedge clk or negedge ext_rst_n)begin
if(ext_rst_n==1'b0)begin
sore_2<=8'h00;
end
else if(en_sore==1'b0)begin
sore_2<=sore_2;
end
else if(sore_2==8'd99)begin
sore_2<=8'h00;
end
else if(key_press[0]==1'b1&&sore_f==1'b1)begin
sore_2<=sore_2+1'b1;
end
else if(key_press[1]==1'b1&&sore_f==1'b1)begin
sore_2<=sore_2+2'b10;
end
else if(key_press[2]==1'b1&&sore_f==1'b1)begin
sore_2<=sore_2+2'b11;
end
else begin
sore_2<=sore_2;
end
end
endmodule
显示模块
odule seg
(
clk,
rst_n,
num1,
num2,
num3,
num4,
SEG1,
AN1
);
input clk;
input rst_n;
input [ 3:0] num1;
input [ 3:0] num2;
input [ 3:0] num3;
input [ 3:0] num4;
output reg [ 3:0] AN1 =2'b0;
output reg [ 7:0] SEG1 = 8'h0;
reg [26:0] cnt1=0;
reg [1:0] led_cnt=0;
reg [ 3:0] led_data=0;
parameter SEC_TIME_PAR = 100_000; //定义数码管动态扫描时间
always @ (posedge clk or negedge rst_n)
begin
if(!rst_n)
cnt1 <= 27'h0;
else if(cnt1 == SEC_TIME_PAR ) //扫描时间计数器,记到SEC_TIME_PAR时,清零,重新计数
cnt1 = 27'h0;
else
cnt1 = cnt1 + 27'h1; //重新计数
end
always @ (posedge clk or negedge rst_n)
begin
if(!rst_n)
led_cnt <= 1'b0;
else if(cnt1 == SEC_TIME_PAR )
led_cnt = led_cnt + 1'b1; //选择计数器加1,依次为0 1 2 3 .....
else
led_cnt = led_cnt;
end
always @ (*)
begin
case(led_cnt)
0 : led_data = num1; //显示
1 : led_data = num2; //显示
2 : led_data = num3; //显示
3 : led_data = num4; //显示
default: led_data = 2'b0;
endcase
end
always @ (*)
begin
case (led_cnt)
0 : AN1 = 4'b1000; //循环选通两个数码管的位选
1 : AN1 = 4'b0100;
2 : AN1 = 4'b0010; //循环选通两个数码管的位选
3 : AN1 = 4'b0001;
default : AN1 = 4'b0;
endcase
end
always @ (*)
begin
case(led_data)
0 : SEG1[7:0] = 8'b00111111; //数码管译码
1 : SEG1[7:0] = 8'b00000110; //数码管译码
2 : SEG1[7:0] = 8'b01011011; //数码管译码
3 : SEG1[7:0] = 8'b01001111; //数码管译码
4 : SEG1[7:0] = 8'b01100110; //数码管译码
5 : SEG1[7:0] = 8'b01101101; //数码管译码
6 : SEG1[7:0] = 8'b01111101; //数码管译码
7 : SEG1[7:0] = 8'b00000111; //数码管译码
8 : SEG1[7:0] = 8'b01111111; //数码管译码
9 : SEG1[7:0] = 8'b01101111; //数码管译码
10 : SEG1[7:0] = 8'b00000000; //数码管译码
default :SEG1[7:0] = 8'b0; //
endcase
end
endmodule
显示模块2
module seg
(
clk,
rst_n,
num1,
num2,
num3,
num4,
SEG1,
AN1
);
input clk;
input rst_n;
input [ 3:0] num1;
input [ 3:0] num2;
input [ 3:0] num3;
input [ 3:0] num4;
output reg [ 3:0] AN1 =2'b0;
output reg [ 7:0] SEG1 = 8'h0;
reg [26:0] cnt1=0;
reg [1:0] led_cnt=0;
reg [ 3:0] led_data=0;
parameter SEC_TIME_PAR = 100_000; //定义数码管动态扫描时间
always @ (posedge clk or negedge rst_n)
begin
if(!rst_n)
cnt1 <= 27'h0;
else if(cnt1 == SEC_TIME_PAR ) //扫描时间计数器,记到SEC_TIME_PAR时,清零,重新计数
cnt1 = 27'h0;
else
cnt1 = cnt1 + 27'h1; //重新计数
end
always @ (posedge clk or negedge rst_n)
begin
if(!rst_n)
led_cnt <= 1'b0;
else if(cnt1 == SEC_TIME_PAR )
led_cnt = led_cnt + 1'b1; //选择计数器加1,依次为0 1 2 3 .....
else
led_cnt = led_cnt;
end
always @ (*)
begin
case(led_cnt)
0 : led_data = num1; //显示
1 : led_data = num2; //显示
2 : led_data = num3; //显示
3 : led_data = num4; //显示
default: led_data = 2'b0;
endcase
end
always @ (*)
begin
case (led_cnt)
0 : AN1 = 4'b1000; //循环选通两个数码管的位选
1 : AN1 = 4'b0100;
2 : AN1 = 4'b0010; //循环选通两个数码管的位选
3 : AN1 = 4'b0001;
default : AN1 = 4'b0;
endcase
end
always @ (*)
begin
case(led_data)
0 : SEG1[7:0] = 8'b00111111; //数码管译码
1 : SEG1[7:0] = 8'b00000110; //数码管译码
2 : SEG1[7:0] = 8'b01011011; //数码管译码
3 : SEG1[7:0] = 8'b01001111; //数码管译码
4 : SEG1[7:0] = 8'b01100110; //数码管译码
5 : SEG1[7:0] = 8'b01101101; //数码管译码
6 : SEG1[7:0] = 8'b01111101; //数码管译码
7 : SEG1[7:0] = 8'b00000111; //数码管译码
8 : SEG1[7:0] = 8'b01111111; //数码管译码
9 : SEG1[7:0] = 8'b01101111; //数码管译码
10 : SEG1[7:0] = 8'b00000000; //数码管译码
default :SEG1[7:0] = 8'b0; //
endcase
end
endmodule
顶层
module top(
input clk, //100MHZ
input ext_rst_n,
output [7:0] seg_cs_pin,
output [7:0] seg_data_0_pin,
output [7:0] seg_data_1_pin,
input switch0 ,//暂停开关 按键拨下为暂停
input switch1 ,//24s使能开关 按键拨下为24S使能
input switch2 ,//显示分数与节数切换位
input S1 ,//切换记分
input S3 ,//1分
input S2 ,//2分
input S0 ,//3分
output [3:0] led
);
//左边4个数码管显示分数 右边4个数码管显示时间
wire key_score,key_score3,key_score2,key_score1;
wire [15:0] times_24s ;
wire [15:0] times_12m ;
wire [15:0] times_sore ;
wire en_cnt ;
wire en_24s ;
wire clk_1hz ;
key_module key_inst
(
.clk (clk),
.rst_n (ext_rst_n),
.KEY ({~S1,~S0,~S2,~S3}),
.key_out({key_score,key_score3,key_score2,key_score1})
);
//分频100MHZ变为1HZ
div d1(
.clk(clk),
.ext_rst_n(ext_rst_n),
.mclk(clk_1hz)
);
//控制电路
control con1(
.clk(clk),
.ext_rst_n(ext_rst_n),
.switch1(switch0),
.switch2(switch1),
//.switch3(switch2),
.en_cnt(en_cnt),
.en_24s(en_24s)
);
//计分模块
soring so1(
.clk(clk),
.ext_rst_n(ext_rst_n),
.key_press({key_score,key_score3,key_score2,key_score1}),
.en_sore(switch2),
.sore(times_sore),
.led(led[3:2])
);
//12分钟倒计时模块
counter_12min c1(
.clk(clk),
.mclk(clk_1hz),
.ext_rst_n(ext_rst_n),
.en_24s(en_24s),
.en_cnt(en_cnt),
.times_12m(times_12m),
.led(led[0])
);
//24秒倒计时模块
counter_24 c2(
.clk(clk),
.mclk(clk_1hz),
.ext_rst_n(ext_rst_n),
.en_24s(en_24s),
.en_cnt(en_cnt),
.times_24s(times_24s),
.led(led[1])
);
//左边4个数码管显示分数 右边4个数码管显示时间
reg [3:0] jieshu;
always@(posedge clk)
begin
if(!ext_rst_n)
jieshu <=1;
else if(switch2==0)
begin
if(key_score1)
jieshu <= jieshu + 1;
end
end
//switch2 拨下去后,显示节数,此时按S3按键可以使得节数加1
wire [31:0] Disp_data;
assign Disp_data[15:0] = en_24s ? times_24s : times_12m;
assign Disp_data[31:16] = (switch2==0)?{12'd0,jieshu}: times_sore;
//右边4数码管
seg seg_u1
(
.clk (clk),
.rst_n (ext_rst_n),
.num1 (Disp_data[3:0]),
.num2 (Disp_data[7:4]),
.num3 (Disp_data[11:8]),
.num4 (Disp_data[15:12]),
.SEG1 (seg_data_1_pin),
.AN1 (seg_cs_pin[7:4])
);
//左边4个
seg seg_u2
(
.clk (clk),
.rst_n (ext_rst_n),
.num1 (Disp_data[19:16]),
.num2 (Disp_data[23:20]),
.num3 (Disp_data[27:24]),
.num4 (Disp_data[31:28]),
.SEG1 (seg_data_0_pin),
.AN1 (seg_cs_pin[3:0])
);
endmodule
FPGA篮球计分设计相关推荐
- FPGA篮球记分器-Verilog
目录 一.摘要 1.1功能: 1.2要求: 1.3要点: 二.各模块的总结 2.1.功能描述 2.2系统结构框图 2.3I/O说明 三.各模块详细设计 3.1倒计时模块: 3.2两队比分模块 3.3 ...
- 【项目实训】篮球计分系统设计(无线nRF905版本)
将单片机项目实训--篮球计分系统(无线nRF905版本)分享出来,如有不足,敬请指出. [实验图片] [视频视频] [项目实训]篮球积分系统(nRF905版本) 目录 一.设计要求 二.方案设计 三. ...
- fpga芯片架构设计与实现 pdf_FPGA设计的8大重要知识点,你都get了吗
1. 面积与速度的平衡与互换 这里的面积指一个设计消耗FPGA/CPLD的逻辑资源的数量,对于FPGA可以用消耗的FF(触发器)和LUT(查找表)来衡量,更一般的衡量方式可以用设计所占的等价逻辑门数. ...
- FPGA学习及设计中的注意事项
为什么80%的码农都做不了架构师?>>> FPGA学习及设计中的注意事项 1.基础问题 FPGA的基础就是数字电路和HDL语言,想学好FPGA的人,建议床头都有一本数字电路的书 ...
- FPGA异步时钟设计中的同步策略
1 引言 基于FPGA的数字系统设计中大都推荐采用同步时序的设计,也就是单时钟系统.但是实际的工程中,纯粹单时钟系统设计的情况很少,特别是设计模块与外围芯片的通信中,跨时钟域的情况经常不可避免. ...
- 基于FPGA的FFT设计
基于FPGA的FFT设计 1.verilog源代码还有实验报告 2.FFT的主要算法 FFT算法并不是一种新的理论算法,它只是用来计算DFT的快速算法,所以它是以DFT为基础的.本课题采用的是基-2 ...
- FPGA中计数器设计探索
FPGA中计数器设计探索,以计数器为32位为例: 第一种方式,直接定义32位计数器. reg [31:0]count; quartus ii 下的编译,资源消耗情况. 85C模型下的时钟频率. 0C模 ...
- (90)FPGA十进制计数器设计-面试必问(十四)(第18天)
(90)FPGA十进制计数器设计(第18天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA十进制计数器设计-面试必问(十四)(第18天) 5)技术交流 ...
- (89)FPGA三分频设计,面试必问(十三)(第18天)
(89)FPGA三分频设计,面试必问(十三)(第18天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA三分频设计,面试必问(十三)(第18天) 5)技术 ...
最新文章
- RDKit:基于支持向量回归预测logP
- 7.Set集合总结(TreeSet集合和HashSet集合)
- SPI 的主模式和从模式
- 转载:谢谢原作者: 块设备驱动实战基础篇二 (继续完善170行过滤驱动代码至200行)
- Nginx使用之location和rewrite用法
- 访问文件服务器提示“服务器存储空间不足”的解决方法
- java public_java中public,private,protected和default的区别
- python学习基础语法_python学习-基础语法
- Ogre学习教程:Ogre1.8.1+VS2010环境配置2(转)
- 2022年电工杯A题高比例风电电力系统储能运行及配置分析参考代码
- 在飞桨平台做图像分类-1 制作基于飞桨的数据集|CSDN创作打卡
- 计算机基础知识和运用2作图,2020年9月统考《计算机应用基础》基础知识试题及答案2...
- Mblog 系统配置
- ubb html编辑器,GitHub - ibone/ubb-editor: web编辑器
- 分布式数据库之TiDB
- 我去扒了杜蕾斯的微博
- 机器学习 之 Kmeans聚类
- allegro标注尺寸设置_Allegro中尺寸标注参数的设置-EDA/PCB-与非网
- SWUST OJ492: 荷兰国旗问题
- 盈透api python封装_盈透证券 简单API 实战
热门文章
- 《终身成长》学习总结
- conda使用清华镜像安装pytorch
- 美团(iOS客户端)面经
- python求字典的平均值_获取字典列表中值的平均值
- 怎么把彩色的照片变黑白色?
- win7 共享打印机后,客户端连接提示:打印机已删除(0x00000709)
- win10 系统开启自带热点,手机无法连接(连接超时)
- 关于h5使用高德地图,没有获取经纬度
- window10无法访问局域网共享文件夹
- html下拉加载实现原理,GitHub - sybiele/wxPull: 原生JS实现微信公众号或网页使用下拉加载和上拉刷新...