作者Aquatics (小哈)
看板Electronics
标题Re: [问题] 请问版上有人懂fpga吗?
时间Tue Jun 9 20:33:27 2009
※ 引述《kissa0123 (男乡民一枚)》之铭言:
: 使用软体:MAX PLUSII
: 使用晶片:EPF10K10TC144-4
: 程式需求功能如下:
: 用一个DATA SW去控制一颗led灯
: 按一下led灯就有十分之一的亮度
: 再按一下led灯就有十分之二的亮度
: 按到第十下led灯的亮度就是全亮!!!
: 之後再按一下就是灭掉
: 接下来就一直循环了!
: 之後凭自己的能耐只能写出下面的程式而已
sorry code我懒得看,直接跟你讨论设计,给点小建议
1. 要做一个PWM Controller
Dimming_i : in std_logic_vector(3 downto 0);
Clock_i : in std_logic;
PWM_o : out std_logic;
然後就用Clock_i 来触发Counter 从 0 数到9,
若Dimming_i 输入为 6,
若当Counter 数值为 0, 1, 2, 3, 4, 5, 6 时, 输出为0, 其余为 1
若Dimming_i 输入为 3,
若当Counter 数值为 0, 1, 2, 3 时, 输出为0, 其余为 1
以此类推. Counter数到9 之後再从0 开始数
这样就实现PWM了 Dimming_i 输入范围从 0 ~ 10
2. 接着再做一个侦测按键的module, 这个module 输出接到上面说的PWM Controller
按一下按键放开时,数值 + 1, 输出数值范围 0 ~ 10
这两个做完再互相接一起,写test bench ,然後就会动了
3. 反弹跳叫做debounce,可以google 一下。不难做的。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.62.110.62
1F:推 kokonut:所以你亮度4个状态的转换是要靠手动的罗~ 06/09 21:44
2F:→ kokonut:你FPGA板应该是用一般发展版(非自己布局的吧) 06/09 21:45
3F:→ kokonut:那你自己外接用个指拨开关就可以了阿~!!! 06/09 21:46
原po是要用一个按钮 按暗暗 就可以循环切换亮度
所以不能用dip switch
如果只是交作业或自己玩,当然用开发版就好啦
洗板还要打件勒,不然就是买QFP包装的自己慢慢焊,这也须一些磨练与经验
对原po来说太慢啦!
4F:推 ksmrt0123:推这篇正解 06/09 21:50
※ 编辑: Aquatics 来自: 61.62.110.62 (06/09 22:37)
5F:推 kissa0123:谢谢你~我研究一下!!虽然看不懂= =" 06/09 22:51
6F:推 miumiudd:有Clock吗? 06/10 12:47