集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 3390|回复: 8

在Max7000中用七段数码管计数,急!!

[复制链接]
CCIE 发表于 2010-6-26 01:27:47 | 显示全部楼层 |阅读模式
本帖最后由 fpgaw 于 2010-7-13 15:04 编辑

在Max700064slc44-10中,com1~4分别是数码管的开关,低电平有效
想让4个数码管从0000计数到7777,因为板上资源的限制,最高位是7不是9,
下面的代码在ModelSim中仿真结果正确,可是在板子上却跑不起来,
请大家帮忙分析一下,先谢谢了
module work(clk,com1,com2,com3,com4,a,b,c,d,e,f,g);
  input clk;
  output com1,com2,com3,com4,a,b,c,d,e,f,g;
  reg com1,com2,com3,com4,a,b,c,d,e,f,g;
  reg[1:0] switch;
  reg[2:0] count1,count2,count3,count4;
  
  initial
  begin
  com1=1;
  com2=1;
  com3=1;
  com4=1;
  a=0;
  b=0;
  c=0;
  d=0;
  e=0;
  f=0;
  g=0;
  switch=2'b00;
  count1=3'b000;
  count2=3'b001;
  count3=3'b010;
  count4=3'b011;
  end
  
  always @ (posedge clk)

     switch=switch+1;



  always @ (switch)
   begin
   case(switch)
     2'b00: begin com1=0;com2=1;com3=1;com4=1;end  
     2'b01: begin com2=0;com1=1;com3=1;com4=1;end
     2'b10: begin com3=0;com1=1;com2=1;com4=1;end
     2'b11: begin com4=0;com1=1;com2=1;com3=1;end
   endcase
   end

  always @ (com1 or com2 or com3 or com4)
   begin
   
    if(com1==0)
   case(count1)
    3'b000: {a,b,c,d,e,f,g}=7'b1111110;
    3'b001: {a,b,c,d,e,f,g}=7'b0110000;
    3'b010: {a,b,c,d,e,f,g}=7'b1101101;
    3'b011: {a,b,c,d,e,f,g}=7'b1111001;
    3'b100: {a,b,c,d,e,f,g}=7'b0110011;
    3'b101: {a,b,c,d,e,f,g}=7'b1011011;
    3'b110: {a,b,c,d,e,f,g}=7'b1011111;
    3'b111: {a,b,c,d,e,f,g}=7'b1110000;
  endcase
   
   
  else if(com2==0)
    begin
     if(count3==3'b111)
     count2=count2+1;
   case(count2)
    3'b000: {a,b,c,d,e,f,g}=7'b1111110;
    3'b001: {a,b,c,d,e,f,g}=7'b0110000;
    3'b010: {a,b,c,d,e,f,g}=7'b1101101;
    3'b011: {a,b,c,d,e,f,g}=7'b1111001;
    3'b100: {a,b,c,d,e,f,g}=7'b0110011;
    3'b101: {a,b,c,d,e,f,g}=7'b1011011;
    3'b110: {a,b,c,d,e,f,g}=7'b1011111;
    3'b111: {a,b,c,d,e,f,g}=7'b1110000;
  endcase
    end

  else if(com3==0)
    begin
     if(count4==3'b111)
      count3=count3+1;
   case(count3)
    3'b000: {a,b,c,d,e,f,g}=7'b1111110;
    3'b001: {a,b,c,d,e,f,g}=7'b0110000;
    3'b010: {a,b,c,d,e,f,g}=7'b1101101;
    3'b011: {a,b,c,d,e,f,g}=7'b1111001;
    3'b100: {a,b,c,d,e,f,g}=7'b0110011;
    3'b101: {a,b,c,d,e,f,g}=7'b1011011;
    3'b110: {a,b,c,d,e,f,g}=7'b1011111;
    3'b111: {a,b,c,d,e,f,g}=7'b1110000;
  endcase
   end

  else if(com4==0)
    begin
    count4=count4+1;
   case(count4)
    3'b000: {a,b,c,d,e,f,g}=7'b1111110;
    3'b001: {a,b,c,d,e,f,g}=7'b0110000;
    3'b010: {a,b,c,d,e,f,g}=7'b1101101;
    3'b011: {a,b,c,d,e,f,g}=7'b1111001;
    3'b100: {a,b,c,d,e,f,g}=7'b0110011;
    3'b101: {a,b,c,d,e,f,g}=7'b1011011;
    3'b110: {a,b,c,d,e,f,g}=7'b1011111;
    3'b111: {a,b,c,d,e,f,g}=7'b1110000;
  endcase
   end

end

endmodule
longt 发表于 2010-6-26 02:31:00 | 显示全部楼层
initial语句是不可综合的<br>
你的板子是直接能运行仿真代码的吗?<br>
没见过<br>
如果不是,需要综合的话<br>
initial在综合的时候是被忽略的。<br>
建议用reset
ATA 发表于 2010-6-26 03:22:38 | 显示全部楼层
哦,我是用Quartus5.1进行编译的<br>
谢谢你的提醒~~~~<br>
不过就算initial被忽略了,按照逻辑,也应该能计数的吧?
UFO 发表于 2010-6-26 05:21:43 | 显示全部楼层
没有initial,没有reset,电路的起始状态是个x<br>
x+1=?
HANG 发表于 2010-6-26 06:49:08 | 显示全部楼层
呵呵,好像是这个原因,是我想错了~~~<br>
谢谢你的指导!
CTT 发表于 2010-6-26 07:09:57 | 显示全部楼层
学习了,不过楼主能把你修改后的程序贴出来吗?
interig 发表于 2010-6-26 07:53:11 | 显示全部楼层
原帖由 tingwhere 于 2006-12-13 11:35 发表<br>
学习了,不过楼主能把你修改后的程序贴出来吗? 将顶楼的initial语句更改为reset
CTT 发表于 2010-6-26 08:10:12 | 显示全部楼层
begin<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; if(count3==3'b111)<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;count2=count2+1;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br>
case(count2)......<br>
<br>
有哪位能把这段黑体代表的意思说一下,为什么count3=7的时候要对count2+1啊?
Sunlife 发表于 2015-6-24 09:44:19 | 显示全部楼层
initial语句是不可综合的<br>
你的板子是直接能运行仿真代码的吗?<br>
没见过<br>
如果不是,需要综合的话<br>
initial在综合的时候是被忽略的。<br>
建议用reset
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-5-6 17:06 , Processed in 0.064349 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表