FPGA学习心得

上一篇 / 下一篇  2008-05-09 17:06:54 / 个人分类:学习笔记

    最近学习FPGA,熟悉了QUARTUS和ISE的编程环境和基本的操作流程,但是只会波形仿真,不会调用Modelsim来进行仿真,真郁闷。不知有没有大侠愿意给点资料~~

     做FPGA课程设计,选了出租车计价器的题。实现超过基本里程后每公里加0.6元,基本里程内为7元,当按下等待键后,转入计时。用四个七段数码管来显示最后的钱。这里的计时和计程采用不同的分频来代替

     分频模块:得到1KHZ的频率

     第二个分频模块:分别5分频和10分频,分别为计程和计时的脉冲。

    二选一模块:用一个外部WAIT来控制到底是计时还是计程

 COUNT模块:module money(clk,reset,start,result);
input clk,reset,start;
//output[3:0] dout0,dout1,dout2,dout3;
output result;
reg[15:0] cnt;
reg[15:0] result;
//reg[15:0] result_buf;
//assign dout0=(reset==1'b0)?0: result%4'd10; //个位
//assign dout1=(reset==1'b0)?0: (result%100)/10;   //十位
//assign dout2=(reset==1'b0)?0: (result%1000)/100; //百位
//assign dout3=(reset==1'b0)?0: (result%10000)/1000; //千位
 当初我想这样就不要用BCD转化模块了,但是为什么报错了呢?说%号后面的操作数必须是POWER2?什么意思呢?

后来就放弃了,想在后面加一个BCD模块好了,请教高手出错原因

 always@(posedgeclk or negedge reset)
 begin
  if(reset==1'b0)
  begin
   cnt<=16'd0;
   result<=16'd70;
   end
   else
 begin
  if(start==1'b0)
    begin
  cnt<=cnt+1'b1;
 // if(cnt%16'd250==0&&cnt>16'd2997)
 if (cnt==16'd3250)
 begin
  result<=result+16'd6;//每当cnt 为250的整数倍时result加6
  cnt<=3000;
  end
       end
   end
  end
endmodule

 

 


FPGA/CPLD器件价格查询

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2008-11-20  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

我的存档

数据统计

  • 访问量: 255
  • 日志数: 2
  • 建立时间: 2008-05-09
  • 更新时间: 2008-05-09

RSS订阅

Open Toolbar