原创 04-02-2008_实战verilog

2008-4-2 22:19 1719 9 10 分类: FPGA/CPLD

fpga实验确实挺有意思的,虽然目前自己的水平还不高,只自学了半个月的verilog,只能写些小东西,呵呵...


实际上到目前为止也只写过两个程序,一个是电子琴,另一个是交通灯模拟程序。第一个太太太太简单了,就不写在这里了,下面发一个自己写的交通灯模拟的程序(注:由于写的匆忙,未设置初始状态,复位信号来时会出现一定的差错;另外,此处发的程序未加降频进程,实际很简单,自己加上就行了。)


程序如下:


module tLight( high,low,a,b,c,d,e,f,preclk,rst);
 
output [3:0] high;
output [3:0] low;
output a,b,c,d,e,f;
input preclk,rst;


 
 reg [3:0] high;
 reg [3:0] low;
reg clk;
reg a,b,c,d,e,f;
reg [1:0] state,next_state;
reg k;
reg clr;
 
 parameter     S_0=0;
 parameter S_1=1;
 parameter   S_2=2;
 parameter  S_3=3;
 parameter dont_care_state=2'bx;
 parameter dont_care_out=6'bx;
always@(posedge preclk)
  if(k==0)
    begin
    
          if(low>4'b0)     
            begin low="low-1"'b0001; clr<=0;        end
          else if(low==4'b0)
             begin if(high==4'b0)begin high<=4'b0001; low<=4'b0101;clr<=1; end
                   else begin high<=high-1;low<=9;clr<=0;end 
             end
    end
  else 
   begin
    
          if(low>4'b0)     
            begin low="low-1"'b0001;  clr<=0;    end
          else if(low==4'b0)
             begin if(high==4'b0)begin high<=4'b0000; low<=4'b0011;clr<=1; end
                   else begin high<=high-1;low<=9;clr<=0;end  
             end
    end



  always@( posedge clr or  posedge rst)
 if( rst==1)   state<=S_0 ;  else if (clr==1) state<=next_state; 


always@(state)
begin
 
     case(state)
    S_0: begin {a,b,c,d,e,f}=6'b100001;k=1;next_state<=S_1; end 
    S_1: begin {a,b,c,d,e,f}=6'b010010;k=0;next_state<=S_2; end
    S_2: begin {a,b,c,d,e,f}=6'b001100;k=1;next_state<=S_3; end
    S_3: begin {a,b,c,d,e,f}=6'b010010;k=0;next_state<=S_0; end
           
     default:begin {a,b,c,d,e,f}=dont_care_out;next_state=dont_care_state; end
     endcase
end
endmodule

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户179934 2009-5-12 15:30

呃,什么叫太太太简单?你以为电子琴很好做吗?
相关推荐阅读
用户144969 2008-05-13 19:03
0513_2008_问题解决了
上次数据结构的习题犯了个很小的错误,在malloc后的struct node后误加了个*号,只在堆中分配了些指针空间,然后又复制粘贴了好几次,一时间竟没发现!(关键是VC6不报错,而且运行皆正确的结果...
用户144969 2008-05-11 21:09
0511_2008_关于链表的求助!
写了个书本上的作业题,就是多项式相加的数据结构题但是问题出来了,在vc6下跑的好好的,到devcpp下报错,codeblocks下也报错,vs05下还报错!(但上述环境调试时结果却都正确)郁闷了一个周...
用户144969 2008-05-06 22:29
05-06-2008_uVision+Proteus
这两天在玩了玩Proteus,真是太棒了!跑了几个程序,哈哈哈,仅仅是记录一下,虽然很短。。。...
用户144969 2008-04-01 19:00
04-01-2008_verilog真好用
学Verilog差不多半个月了啊,虽然是在课余时间学的......虽然网上有不少人说在高层的设计上,它不如VHDL,但就目前的我来说,它真的比VHDL好用的多!哎,今天去做实验,做了个电子琴的程序,其...
用户144969 2008-03-29 16:01
03-29-2008_摆脱网通拨号程序
前些天教员让我们去摸一摸linux,做个串口通信的程序出来玩玩......呵呵,摸就摸呗,上手试了下,以硬盘引导的方式装了个红帽的Fedora Core 8,只是联网有些麻烦,河南网通貌似对拨号进行了...
我要评论
1
9
关闭 站长推荐上一条 /3 下一条