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
导入论坛
收藏
分享给好友
推荐到圈子
管理
举报
TAG: