作者kissa0123 (男乡民一枚)
看板Electronics
标题[问题] 请问版上有人懂fpga吗?
时间Tue Jun 9 12:09:54 2009
使用软体:MAX PLUSII
使用晶片:EPF10K10TC144-4
设计程式需求功能如下:
用一个DATA SW去控制一颗led灯
按一下led灯就有十分之一的亮度
再按一下led灯就有十分之二的亮度
按到第十下led灯的亮度就是全亮!!!
之後再按一下就是灭掉
接下来就一直循环了!
之後凭自己的能耐只能写出下面的程式而已
module xmax(clk,led,enable);
input clk;
output led,enable;
reg [9:0]led;
reg [15:0]ms1;
reg [7:0]count,count1;
reg scanclk1,scanclk2;
assign enable = 1;
always@(posedge clk)
begin
if(ms1==0)
begin
ms1 = 16'h0010;
scanclk1 = ~scanclk1;
end
else
begin
ms1 = ms1-1;
end
end
always@(posedge scanclk1)
begin
if(count == 10)
begin
count = 0;
scanclk2 = ~scanclk2;
end
else
count = count + 1;
end
always@(posedge scanclk2)
begin
if(count1 == 100)
count1 = 0;
else
count1 = count1 + 1;
if(count1 <= 100)
led[9]=1;
else
led[9]=0;
if(count1 <= 90)
led[8]=1;
else
led[8]=0;
if(count1 <= 80)
led[7]=1;
else
led[7]=0;
if(count1 <= 70)
led[6]=1;
else
led[6]=0;
if(count1 <= 60)
led[5]=1;
else
led[5]=0;
if(count1 <= 50)
led[4]=1;
else
led[4]=0;
if(count1 <= 40)
led[3]=1;
else
led[3]=0;
if(count1 <= 30)
led[2]=1;
else
led[2]=0;
if(count1 <= 20)
led[1]=1;
else
led[1]=0;
if(count1 <= 10)
led[0]=1;
else
led[0]=0;
end
endmodule
我写的程式功能是10颗led各代表10个亮度
问题来了...
(1)要怎使用datd sw变成按一下就可以切换亮度...
之前在网路有发问过
有人说需要用到弹跳开关!
(2)但弹跳开关是什麽>"<(翻书翻不到!毫无头绪中...)
有人能指导一下的嘛...
跪求各位了>.<
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.204.118.61
1F:推 deathcustom:去材料行问比较快 06/09 12:58
2F:推 deathcustom:或者去看看max plus II有没有副板~就是外接的模组 06/09 12:59
3F:推 deathcustom:比如SRAM、ADDA、RS232、七段显示功能的副板应该都有 06/09 13:00
4F:→ MAXI:用频率改变亮度? 06/09 13:13
5F:推 youwin0125:改变电流大小? 改变电阻大小? 06/09 15:25
6F:推 pinkjojo:弹跳开关.按一下会弹回来恢复原来的状态类似PC reset按纽 06/09 16:36
7F:→ pinkjojo:应该说就是PC reset button 06/09 16:37
8F:推 katheryne:这个用 microp 比较省钱吧 ?? 06/09 18:42
※ 编辑: kissa0123 来自: 123.204.118.61 (06/09 22:48)
9F:→ kissa0123:我只是要设计程式而已@@不用做版子... 06/09 22:48
10F:推 katheryne:如果是课程需要而不是要开发产品,还是建议用 PWM 切他 06/10 08:03
11F:→ kissa0123:老师上课也没教!问他也不说..昨天咕狗一下找到弹跳开关 06/10 10:34
12F:→ kissa0123:pwm~这名词网路上有人分享过! 我自己在努力一下吧! 06/10 10:35
13F:→ ery001:ripple counter+外部的讯号(或许是您的data sw)当输入clk? 06/10 16:09
14F:→ ery001:fpga和这里的data sw是指啥我不是很了,但单纯以功能和 06/10 16:11
15F:→ ery001:digital设计考量,这应该一个programmable ripple counter 06/10 16:11
16F:→ ery001:把clk拉出去当成输入控制讯号,最多就是counter输出多加个 06/10 16:13
17F:→ ery001:decoder,当然fpga有其他的考量的话我就真的不懂了 :P 06/10 16:14