作者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