реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ПЛИС MAX II, подскажите, пожалуйста
pashkent
сообщение Sep 6 2012, 05:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 2-09-12
Пользователь №: 73 353



Подскажите, пожалуйста. У меня есть отладочная плата maxII EPM1270 CPLD. Хочу на ней освоить quartusII и varilog. Пытаюсь сейчас сделать чтобы светодиод включался и выключался по нажатию кнопки. Как это реализовать в Quartus? Я попробовал так(прикрепил файл), у меня на входе вырабатывается сигнал с частотой 66Мгц, потом я его на счетчик пускаю 25 разрядный, счет до 30 000 000. на выход идет 23 разряд...т.е где-то 2 Гц... а вот как реализовать кнопку не знаю. кнопка типа нажал и отпустил и она вернулась в исходное состояние.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
stu
сообщение Sep 6 2012, 06:35
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 235
Регистрация: 11-11-09
Пользователь №: 53 561



1) интересно, почему Вы решили, что Ваша схема имеет что-то общее с verilog?
2) на счет кнопки я не понял, Вам надо: а) нажали - мыргает, отпустили - не мыргает; б) нажали раз - мыргает, нажали два - не мыргает ??
3) при работе с кнопкой можно исключить дребезг используя тот же счетчик
Примитив для счетчика:
reg [2:0] a;
always @ (posedge clk)
begin
a <= a + 3'd1;
end

И совет, который любят давать новичкам на этом форуме: "Почитайте Иосиф К. "Краткий курс HDL – Verilog на русском и статьи." на КиТ" =)


--------------------
Мы ведь работаем, чтобы жить, а не живем, чтобы работать??? ;)
Go to the top of the page
 
+Quote Post
pashkent
сообщение Sep 6 2012, 06:52
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 2-09-12
Пользователь №: 73 353



1)я сначала просто проектирую, а потом буду эту же задачу на верилоге делать...
2)мне надо вариант б)
3) а как использовать тот же счетчик?
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Sep 6 2012, 07:17
Сообщение #4


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Изучать ПЛИС методом тыка, конечно, можно. Но это, имхо, весьма трансректальный способ. Для начала почитайте какой-нибудь приличный букварь, например "Проектирование устройств на микросхемах с программируемой структурой", авт. Грушвицкий, Мурсаев, Угрюмов и Ко.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
pashkent
сообщение Sep 6 2012, 07:24
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 2-09-12
Пользователь №: 73 353



Я не только методом тыка. Пытаюсь разобраться с помощью "Цифровая схемотехника современный подход" Ашихмин, "Цифровая схемотехника" Угрюмов...спасибо за совет, попробую найти эту книжку.
Go to the top of the page
 
+Quote Post
stu
сообщение Sep 6 2012, 11:27
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 235
Регистрация: 11-11-09
Пользователь №: 53 561



Цитата(pashkent @ Sep 6 2012, 10:52) *
1)я сначала просто проектирую, а потом буду эту же задачу на верилоге делать...
2)мне надо вариант б)
3) а как использовать тот же счетчик?

1) успехов в таком нелегком "пошаговом" деле
2) опишите Д-триггер, у которого состояние меняется по нажатию кнопки(+1 или 1<->0 - как хотите), и используйте его как Clk_En для мыргания
3) ну к примеру, стоит у Вас счетчик, который считает до 660 000, если он досчитал, переключаем значение Д-триггера кнопки, если кнопку нажали - сбрасываем счетчик, досчитываем до 660 000 и о5 меняем значение Д-триггера.

Чтоб привычную схему увидеть Вам на RTL, то на AHDL:
Код
Include "lpm_counter";

constant Coef = 660000;
constant C_Width = ceil(log2(Coef));

Subdesign Swt_Driver
(
   Clrn                :    input = vcc;
   Clk                    :    input = gnd;
   Clk_En                :    input = vcc;
   Swt_In                :    input = vcc;

   Swt_Out                :    output;
)

Variable

   1Cout                    :    dffe;
   Swt_Out                    :    dffe;
   Count                    :    lpm_counter with (
                            lpm_direction = "up",
                            lpm_width = C_Width,
                            lpm_modulus = Coef);
Begin

   Count.(clock, clk_en, cnt_en, sclr, aclr) = (Clk, Clk_En, !Count.cout, Swt_In, !Clrn);
   1Cout.(d, clk, ena, clrn) = (Count.cout, Clk, Clk_En, Clrn);
   Swt_Out.(d, clk, ena, clrn) = (Count.cout & !1Cout, Clk, Clk_En, Clrn);
End;

В результате по Swt_Out будет переключаться Д-триггер кнопки

Сообщение отредактировал stu - Sep 6 2012, 11:27


--------------------
Мы ведь работаем, чтобы жить, а не живем, чтобы работать??? ;)
Go to the top of the page
 
+Quote Post
nckkm
сообщение Sep 11 2012, 07:15
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 13-04-10
Пользователь №: 56 623



http://marsohod.org/index.php/projects/8-emptyproject
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 10:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01442 секунд с 7
ELECTRONIX ©2004-2016