• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > basys2数码管动态显示verilog

basys2数码管动态显示verilog

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了basys2 verilog,basys2数码管,basys2数码管显示,basys2,basys2开发板等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:basys2 数码管动态显示 verilog
描述:

verilog数码管

为什么数码管动态显示定义的管脚顺序和我设计的是反的~~求助啊 在线等!!!!!
输入x[3:0]显示的是最左边的管子
basys2板子~~~~
约束文件
NET "clk" LOC=B8;
NET "x[0]" LOC=P11; 开关最右边
NET "x[1]" LOC=L3;
NET "x[2]" LOC=K3;
NET "x[3]" LOC=B4;
NET "x[4]" LOC=G3;
NET "x[5]" LOC=F3;
NET "x[6]" LOC=E2;
NET "x[7]" LOC=N3; 开关最左边
NET "a_to_g[0]" LOC=M12;
NET "a_to_g[1]" LOC=L13;
NET "a_to_g[2]" LOC=P12;
NET "a_to_g[3]" LOC=N11;
NET "a_to_g[4]" LOC=N14;
NET "a_to_g[5]" LOC=H12;
NET "a_to_g[6]" LOC=L14;
NET "an[0]" LOC=K14; 数码管最右边的管子
NET "an[1]" LOC=M13;
NET "an[2]" LOC=J12;
NET "an[3]" LOC=F12; 数码管最左边的管子
顶层模块
module top(
input clk,
input[7:0]x,
output[3:0]an,
output reg[6:0]a_to_g
);
wire clk_div;
wire[1:0]s; //此时哪个数码管亮灯
reg[3:0] digit;
reg[4:0]temp;
clkdiv u0(.clk(clk),.div(clk_div));
enabled u1(.clkdiv(clk_div),.an(an),.n(s));
always@(*)
begin
case(s)
0: digit=x[3:0];
1: digit=x[3:0];
2: digit=x[7:4];
3: digit=x[7:4];
endcase
end
always@(*)
begin
temp=to8421(digit);
if(temp[4]==0)
begin
case(s)
0:a_to_g=display(temp[3:0]);
1:a_to_g=7*b0000001;
2:a_to_g=display(temp[3:0]);
3:a_to_g=7*b0000001;
endcase
end
else if(temp[4]==1)
begin
case(s)
0:a_to_g=display(temp[3:0]);
1:a_to_g=7*b1001111;
2:a_to_g=display(temp[3:0]);
3:a_to_g=7*b1001111;
endcase
end
end
function [6:0]display;
input[3:0]x;
begin
case(x)
0:display=7*b0000001;
1:display=7*b1001111;
2:display=7*b0010010;
3:display=7*b0000110;
4:display=7*b1001100;
5:display=7*b0100100;
6:display=7*b0100000;
7:display=7*b0001111;
8:display=7*b0000000;
9:display=7*b0000100;
*hA:display=7*b0001000;
*hB:display=7*b1100000;
*hC:display=7*b0110001;
*hD:display=7*b1000010;
*hE:display=7*b0110000;
*hF:display=7*b0111000;
default:display=7*b0000001; //0
endcase
end
endfunction
function [4:0]to8421;
input[3:0]x;
begin
case(x)
0:to8421=5*b00000;
1:to8421=5*b00001;
2:to8421=5*b00010;
3:to8421=5*b00011;
4:to8421=5*b00100;
5:to8421=5*b00101;
6:to8421=5*b00110;
7:to8421=5*b00111;
8:to8421=5*b01000;
9:to8421=5*b01001;
*hA:to8421=5*b10000;
*hB:to8421=5*b10001;
*hC:to8421=5*b10010;
*hD:to8421=5*b10011;
*hE:to8421=5*b10100;
*hF:to8421=5*b10101;
endcase
end
endfunction
endmodule
时钟模块
//生成周期为5.2ms的时钟
module clkdiv(
input clk,
output reg div
);
reg[16:0]s;
always@(posedge clk)
begin
if (s==130000)
begin s<=0; div=~div; end
else
s<=s+1;
end
endmodule
使能模块
//使四个数码管依次连续使能
module enabled(
input clkdiv,
output reg[3:0]an,
output reg[1:0]n
);
reg[1:0]q;
always@(posedge clkdiv)
begin
if(q==3) q<=0;
else q<=q+1;
end
always@(*)
begin
an=4*b1111;
case(q)
0:begin an=4*b1110; n=0; end
1:begin an=4*b1101; n=1; end
2:begin an=4*b1011; n=2; end
3:begin an=4*b0111; n=3; end
default:an=4*b1111; //禁止数码管显示
endcase
end
endmodule


解决方案1:

数码管控制引脚定义反了

解决方案2:

反着,什么反着?
是不是共阴极共阳极反了?

解决方案3:

感觉这个程序阻塞  非阻塞混着用不太好   然后q  最好初始化一下


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • basys2数码管动态显示verilog

相关文章

  • 2017-06-05 VS2008开windowsCE程序如何通过webservice连接oracle
  • 2017-06-05 ADXL345三轴输出数据问题
  • 2017-06-05 运行状态检测win10已禁用对该状态检测的服务?
  • 2017-06-05 PIC16F1829汇编指令不能跳转的问题
  • 2017-06-05 iarembeddedworkbenchformsp430550无法用JTAG通过并口下载程序
  • 2017-06-05 如果通过应用程序判断计算机的USB接口是1。1还是2。0的?
  • 2017-06-05 lwip作为服务器同个Ip地址多次重复连接服务器
  • 2017-06-05 有关于redboot的几个疑问
  • 2017-06-05 这个电流转电压怎么工作的?电容有什么作用?
  • 2017-06-05 动态下测量物体倾斜角度

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 串口编程中的流控制
    • 用串口调试助手往wince平板上发送数字,结果自动换行是怎么回事?
    • 请问:NTFS文件系统的属性详细说明和表现
    • 操作系统内核里有什么东西?
    • 为什么我的外部中断函数不能在串口上显示,51单片机的,急急
    • 怎样取得系统原有的串口序号?
    • 讨论如何向通用应用软件传递文件控制参数!
    • 各位大神帮帮忙,关于lsm9ds0
    • COM口的释放问题!
    • 最近使用公司电脑感觉到的怪现象,我是电脑中毒了么?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有