Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Для начинающих (http://zx-pk.ru/forumdisplay.php?f=43)
-   -   Изучение с "нуля" VHDL и ПЛИС Xilinx (http://zx-pk.ru/showthread.php?t=24076)

Ewgeny7 24th October 2014 13:58

Давайте что ли чуток продолжим практику.
Очередное задание. Делаем ШИМ (PWM).
Просто я параллельно с этой темой веду переписку с Миккой, там как раз эта темя затрагивалась.
Что такое ШИМ - вроде как все железячники должны знать.
Это способ "оформить" цифровой сигнал в подобие аналогового. Практическое применение - синтез аналогового уровня, или звука, или руление электромотором или светодиодом.
Принцип основан на изменении скважности выходящей с генератора ШИМ частоты. Чем больше соотношение "единицы" к "нулю", тем больше аналоговый уровень на RC (LC) фильтре перед потребителем сигнала. Естесственно, частота ШИМ обычно используется достаточно высокая, чтобы эффективней сгладить пульсации и отрезать высокочастотную составляющую фильтром.
Для светодиодиков, подключенных к ШИМ, в принципе достаточно поставить сглаживающий конденсатор параллельно лапам светика.
Давайте придумаем и изобразим ШИМ.
Техзадание.
Вход - клок, 1 мегагерц.
Выход - сигнал ШИМ, дискретность - 256 импульсов.
Уровень заполнения пока возьмем константой от балды, например - 63.
Т.е. мы должны получить сигнал ШИМ, где 63 кванта времени будет единица на выходе, а оставшиеся 256-63=193 - ноль.
Когда это будет сделано, привинтите восемь кнопочек на вход альтерки, чтобы уже можно было управлять ШИМом.
Готовый код, как обычно, будет под спойлером.

Скрытый текст


Code:

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all; 

entity test is                   
port(
        clk                        : in std_logic;
        q                        : out std_logic
        );
end test;
       
architecture arch of test is

signal cnt                : std_logic_vector(7 downto 0);

begin

process(clk)
begin
        if (rising_edge(clk)) then
                if (cnt=0) then
                        q <= '1';
                elsif (cnt=63) then
                        q <= '0';
                end if;
                cnt <= cnt+1;
        end if;
end process;

end arch;

[свернуть]


http://savepic.org/6341015.png

vfiuchcikicshuusrch 24th October 2014 14:12

скоро с вами буду учиться)

Ewgeny7, было бы круто, если бы книжку написал какую-нибудь по этому делу :)

Ewgeny7 24th October 2014 14:23

Заодно можно посчитать, какое аналоговое напряжение будет на выходе плиски после фильтрации.
Во сколько раз уменьшится уровень сигнала:
256/63=4,063
Примем, что CPLD у нас пятивольтовая, и условно примем, что активная единица на выходе тоже равна 5,0 вольт.
Тогда при текущей реализации ШИМ мы получаем аналоговый сигнал 5,0/4,063=1,23 вольт.

---------- Post added at 13:23 ---------- Previous post was at 13:20 ----------

Quote:

Originally Posted by vfiuchcikicshuusrch (Post 747766)
если бы книжку написал какую-нибудь по этому делу

Я писал несколько "типа методичек", на книжку у меня пороха не хватит, люблю перескакивать с одного хобби на другое. Да и сам я "чайник", чтобы серьезным вещам учить :) Зато мне никогда не приедается и не наскучивает одно занятие :)

vfiuchcikicshuusrch 24th October 2014 14:55

Quote:

люблю перескакивать с одного хобби на другое. Да и сам я "чайник", чтобы серьезным вещам учить Зато мне никогда не приедается и не наскучивает одно занятие
я так же часто перескакиваю. но заставляю себя доделывать дела и не бросать их...

а ссылки есть на методички ?

Ewgeny7 24th October 2014 15:03

Ну, наприме вот. Только сейчас я бы уже немножко по-другому бы все сделал.

Totem 25th October 2014 14:16

Прошу прошения за задержку возникла проблема с упаковкой :) точнее
с отсутствием оной.

Скрытый текст


Женя еще чего может? или убрать чего?:)
http://s50.radikal.ru/i127/1410/27/95bbfcac6037.jpg

Это едет в Симферополь. вопросы те же.
http://s019.radikal.ru/i625/1410/44/11e8fbbc13e0.jpg
[свернуть]

vfiuchcikicshuusrch 25th October 2014 15:02

1 Attachment(s)
а я уже макетку собрал... жду :)

без косяков конечно не получилось..
вместо 74hc04 поставил hc14 .. и теперь вместо 20мгц получается 48)))
логика чувствительная очень.. нужно наверно перепаять на LS04 (их полно в отличии от HC04)

запаял стабилизатор на 3.3в потом вспомнил что 7064 от Totem на 5в рассчитана.

Totem 25th October 2014 15:10

Quote:

Originally Posted by vfiuchcikicshuusrch (Post 748118)
а я уже макетку собрал... жду :)

без косяков конечно не получилось..
вместо 74hc04 поставил hc14 .. и теперь вместо 20мгц получается 48)))
логика чувствительная очень.. нужно наверно перепаять на LS04 (их полно в отличии от HC04)

запаял стабилизатор на 3.3в потом вспомнил что 7064 от Totem на 5в рассчитана.

все выводное желательно паять последними, они будут мешать пять SMD.

vfiuchcikicshuusrch 25th October 2014 15:13

Totem, понятно что будут. но я справлюсь :) там достаточно большие контакты и ноги у чипа.. проблем у меня вообще не возникнет.
темболее если воспользуюсь паяльной пастой, и феном погрею с обратной стороны платы, то всё запаяется на раздва.. и ничего не помешает вообще :)

Totem 25th October 2014 15:18

Quote:

Originally Posted by vfiuchcikicshuusrch (Post 748123)
Totem, понятно что будут. но я справлюсь :) там достаточно большие контакты и ноги у чипа.. проблем у меня вообще не возникнет.
темболее если воспользуюсь паяльной пастой, и феном погрею с обратной стороны платы, то всё запаяется на раздва.. и ничего не помешает вообще :)

Кстати ты почтовый индекс не указал, или я не доглядел. возникла проблема:)


All times are GMT +4. The time now is 23:04.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.