专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
FPGA
用Verilog语言怎么写一个60进制的计数器然后显示在数码管上
2019-07-16 00:29
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
FPGA
7260
19
1305
小弟刚学
FPGA
用的是EP4CE6 现在想写一个60进制的计数器 然后在数码管上显示出来 用verilog写 但想了好几天没想出来 去大侠指导下 或给个程序看看 小弟感激不尽。。。。。拜托了
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
xqandwn
2019-07-18 11:24
本帖最后由 xqandwn 于 2015-10-18 22:23 编辑
汗!!回帖后代码格式变乱了……
下面是底层模块,显示电路自动忽略高位多余的0,自动添加小数点后的0:
module LED_7
(
input logic CLK , //输入时钟,频率:
input logic RST_n , //复位端口,低电平复位
input logic [26:0] data_num , //待显示的数据
input logic [2:0] data_dot , //输入数据小数点位置
output logic [3:0] DSEL , //7段数码管【8--1】对应选择
output logic DEN , //数码管使能,高电平有效
output logic [7:0] led7_out //数据输出,最低位为小数点
);
parameter led0 = 0,
led1 = 1,
led2 = 2,
led3 = 3,
led4 = 4,
led5 = 5,
led6 = 6,
led7 = 7;
logic DEN_reg ;
logic [2:0] DSEL_cnt ;
logic [2:0] DSEL_cnt_reg ;
logic [7:0] led7_out_reg ;
logic [2:0] data_dot_reg ;
logic [26:0] data_num_reg ;
always@(posedge CLK,negedge Rst_n)
begin
if(!RST_n)
begin
DSEL_cnt <= 3'b000;
led7_out_reg <= 8'hFF;
end
else
begin
data_dot_reg <= data_dot;
data_num_reg <= data_num;
DSEL_cnt <= DSEL_cnt + 3'd1;
DSEL_cnt_reg <= DSEL_cnt; //case(DSEL_cnt)相对DSEL_cnt会有一周期延时
case(DSEL_cnt)
led0:
begin
led7_decoder((data_num_reg)%10,led7_out_reg[7:1]);
led7_out_reg[0] <= (data_dot_reg != 0);
DEN_reg <= 1;
end
led1:
begin
led7_decoder((data_num_reg/10)%10,led7_out_reg[7:1]);
led7_out_reg[0] <= (data_dot_reg != 1);
DEN_reg <= (data_num_reg >= 10)||(data_dot_reg >= 1);
end
led2:
begin
led7_decoder((data_num_reg/100)%10,led7_out_reg[7:1]);
led7_out_reg[0] <= (data_dot_reg != 2);
DEN_reg <= (data_num_reg >= 100)||(data_dot_reg >= 2);
end
led3:
begin
led7_decoder((data_num_reg/1000)%10,led7_out_reg[7:1]);
led7_out_reg[0] <= (data_dot_reg != 3);
DEN_reg <= (data_num_reg >= 1000)||(data_dot_reg >= 3);
end
led4:
begin
led7_decoder((data_num_reg/10000)%10,led7_out_reg[7:1]);
led7_out_reg[0] <= (data_dot_reg != 4);
DEN_reg <= (data_num_reg >= 10000)||(data_dot_reg >= 4);
end
led5:
begin
led7_decoder((data_num_reg/100000)%10,led7_out_reg[7:1]);
led7_out_reg[0] <= (data_dot_reg != 5);
DEN_reg <= (data_num_reg >= 100000)||(data_dot_reg >= 5);
end
led6:
begin
led7_decoder((data_num_reg/1000000)%10,led7_out_reg[7:1]);
led7_out_reg[0] <= (data_dot_reg != 6);
DEN_reg <= (data_num_reg >= 1000000)||(data_dot_reg >= 6);
end
led7:
begin
led7_decoder((data_num_reg/10000000)%10,led7_out_reg[7:1]);
led7_out_reg[0] <= (data_dot_reg != 7);
DEN_reg <= (data_num_reg >= 10000000)||(data_dot_reg >= 7);
end
endcase
end
end
assign DSEL = DSEL_cnt_reg;
assign DEN = DEN_reg;
assign led7_out = led7_out_reg;
task led7_decoder //7段数码管 译码电路
(
input logic [3:0] data,
output logic [6:0] data_decoder
);
case(data)
0: data_decoder = 7'b1000000;
1: data_decoder = 7'b1111001;
2: data_decoder = 7'b0100100;
3: data_decoder = 7'b0110000;
4: data_decoder = 7'b0011001;
5: data_decoder = 7'b0010010;
6: data_decoder = 7'b0000010;
7: data_decoder = 7'b1111000;
8: data_decoder = 7'b0000000;
9: data_decoder = 7'b0010000;
default: data_decoder = 7'b0110110;
endcase
endtask
endmodule
加载中...
查看其它19个回答
一周热门
更多
>
相关问题
如何用FPGA驱动LCD屏?
5 个回答
请教一下各位专家如何用FPGA做eDP接口?
6 个回答
FPGA CH7301c DVI(显示器数字接口)没有数字输出
7 个回答
100颗FPGA的板子,开开眼界
6 个回答
求教自制最小系统版
10 个回答
相关文章
嵌入式领域,FPGA的串口通信接口设计,VHDL编程,altera平台
0个评论
Xilinx的FPGA开发工具——ISE开发流程
0个评论
基于FPGA的详细设计流程
0个评论
干货分享,FPGA硬件系统的设计技巧
0个评论
一种通过FPGA对AD9558时钟管理芯片进行配置的方法
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
FPGA
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
汗!!回帖后代码格式变乱了……
下面是底层模块,显示电路自动忽略高位多余的0,自动添加小数点后的0:
module LED_7
(
input logic CLK , //输入时钟,频率:
input logic RST_n , //复位端口,低电平复位
input logic [26:0] data_num , //待显示的数据
input logic [2:0] data_dot , //输入数据小数点位置
output logic [3:0] DSEL , //7段数码管【8--1】对应选择
output logic DEN , //数码管使能,高电平有效
output logic [7:0] led7_out //数据输出,最低位为小数点
);
parameter led0 = 0,
led1 = 1,
led2 = 2,
led3 = 3,
led4 = 4,
led5 = 5,
led6 = 6,
led7 = 7;
logic DEN_reg ;
logic [2:0] DSEL_cnt ;
logic [2:0] DSEL_cnt_reg ;
logic [7:0] led7_out_reg ;
logic [2:0] data_dot_reg ;
logic [26:0] data_num_reg ;
always@(posedge CLK,negedge Rst_n)
begin
if(!RST_n)
begin
DSEL_cnt <= 3'b000;
led7_out_reg <= 8'hFF;
end
else
begin
data_dot_reg <= data_dot;
data_num_reg <= data_num;
DSEL_cnt <= DSEL_cnt + 3'd1;
DSEL_cnt_reg <= DSEL_cnt; //case(DSEL_cnt)相对DSEL_cnt会有一周期延时
case(DSEL_cnt)
led0:
begin
led7_decoder((data_num_reg)%10,led7_out_reg[7:1]);
led7_out_reg[0] <= (data_dot_reg != 0);
DEN_reg <= 1;
end
led1:
begin
led7_decoder((data_num_reg/10)%10,led7_out_reg[7:1]);
led7_out_reg[0] <= (data_dot_reg != 1);
DEN_reg <= (data_num_reg >= 10)||(data_dot_reg >= 1);
end
led2:
begin
led7_decoder((data_num_reg/100)%10,led7_out_reg[7:1]);
led7_out_reg[0] <= (data_dot_reg != 2);
DEN_reg <= (data_num_reg >= 100)||(data_dot_reg >= 2);
end
led3:
begin
led7_decoder((data_num_reg/1000)%10,led7_out_reg[7:1]);
led7_out_reg[0] <= (data_dot_reg != 3);
DEN_reg <= (data_num_reg >= 1000)||(data_dot_reg >= 3);
end
led4:
begin
led7_decoder((data_num_reg/10000)%10,led7_out_reg[7:1]);
led7_out_reg[0] <= (data_dot_reg != 4);
DEN_reg <= (data_num_reg >= 10000)||(data_dot_reg >= 4);
end
led5:
begin
led7_decoder((data_num_reg/100000)%10,led7_out_reg[7:1]);
led7_out_reg[0] <= (data_dot_reg != 5);
DEN_reg <= (data_num_reg >= 100000)||(data_dot_reg >= 5);
end
led6:
begin
led7_decoder((data_num_reg/1000000)%10,led7_out_reg[7:1]);
led7_out_reg[0] <= (data_dot_reg != 6);
DEN_reg <= (data_num_reg >= 1000000)||(data_dot_reg >= 6);
end
led7:
begin
led7_decoder((data_num_reg/10000000)%10,led7_out_reg[7:1]);
led7_out_reg[0] <= (data_dot_reg != 7);
DEN_reg <= (data_num_reg >= 10000000)||(data_dot_reg >= 7);
end
endcase
end
end
assign DSEL = DSEL_cnt_reg;
assign DEN = DEN_reg;
assign led7_out = led7_out_reg;
task led7_decoder //7段数码管 译码电路
(
input logic [3:0] data,
output logic [6:0] data_decoder
);
case(data)
0: data_decoder = 7'b1000000;
1: data_decoder = 7'b1111001;
2: data_decoder = 7'b0100100;
3: data_decoder = 7'b0110000;
4: data_decoder = 7'b0011001;
5: data_decoder = 7'b0010010;
6: data_decoder = 7'b0000010;
7: data_decoder = 7'b1111000;
8: data_decoder = 7'b0000000;
9: data_decoder = 7'b0010000;
default: data_decoder = 7'b0110110;
endcase
endtask
endmodule
一周热门 更多>