g614380

Инкрементирующе-Декрементирующий Счетчик.

6 сообщений в этой теме

g614380    0

Добрый день, Уважаемы коллеги! Начинаю разбираться в программировании ПЛИС на Verilog.

Появилась задача описать двоичный семиразрядный счетчик, который бы по нажатию одной кнопки инкрементировал бы свое значение, а по нажатию второй- декрементирова. По нажатию кнопок на порты ПЛИС приходят положительние импульсы, одно нажатие, один импульс. Прошу тапками не закидывать, только начал своение, и никак не могу решить такую простенькую задачку. Подкиньте мыслю:-)

Прошу прощения за ошибки и опечатки, пишу с телефона.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
o_l_e_g    1 643

Посмотреть учебники по обычной (не программируемой) логике, там есть конструкция реверсивных счетчиков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Vascom    660

module cnt_inc_dec(
clk,
rstn,
inc_pulse,
dec_pulse,
cnt_out
);

input clk;
input rstn;
input inc_pulse;
input dec_pulse;

output [6:0] cnt_out;

reg [6:0] cnt;

always @(posedge clk or negedge rstn)
if(!rstn) cnt <= 7'b0;
else
begin
if(inc_pulse) cnt <= cnt + 7'b1;
else if(dec_pulse) cnt <= cnt - 7'b1;
end

assign cnt_out = cnt;

endmodule

Простейший вариант, поскольку не описано поведение при одновременном приходе обоих импульсов.

Изменено пользователем Vascom

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
g614380    0

Спасибо за код. Тут все понятно, приходит тактовый сигнал clk на счетчик,и если inc_pulse то инкрементируем, а если dec_pulse декрементируем. Это все предельно ясно. Но в этом случае если какой либо из разрешающих сигналов постоянен и длительность этого сигнал больше длительность клоков, то счетчик за врнмя удержания этого сигнала проинкрементируется не на единицу, а к примеру на 10ть, ну или сколько там тактовых импульсов прилетит за время разрешающего сигнала. А вот как считать именно количество нажатий кнопки в одну сторону и потом вычитать количество нажатий другой кнопки. Можно клоковый импульс сделать больше по времени чем время зажатия конопки, но все равно, если кнопкк все же зажать, то счетчик пойдет считать ипульсы. А как сделать чтоб при зажатой кнопке он не считал а именно инкрементировался на один, а при зажатии другой, декрементировался с предыдущего значения на один?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Vascom    660

А, не по клоку...

Правильнее сделать, чтобы импульсы были всегда длиной один клок, то есть выделить фронт импульса. Сделать это проще простого, надо лишь добавить:

reg inc_pulse_d;
wire inc_pulse_1;

always @(posedge clk or negedge rstn)
if(!rstn) inc_pulse_d <= 1'b0;
else	 inc_pulse_d <= inc_pulse;

assign inc_pulse_1 = inc_pulse & ~inc_pulse_d;

И использовать полученный inc_pulse_1.

Для надёжности можно предварительно inc_pulse защёлкнуть один раз по клоку.

Изменено пользователем Vascom

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
g614380    0

Вот спасибо за оперативные ответы. Пошел разбираться

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сообщения

    • Здравствуйте. Достался по случаю бп Codegen 250XA c сгоревшими по высокой стороне предохранителем, двумя диодами из мостика, двумя 1307. По дежурке сгорели 2n60, C945, А733 и резистор r15 на 560 Ом. Все поменял, кондеров вспухших нет, вместо предохранителя запаял лампу. При включении лампа вспыхивает и гаснет (кз нет), дежурки нет. Замерял сопротивление между фиолетовым проводом дежурки и землей-96,7 Ом, оранжевым (3,3В)-427 Ом, красным (5 В)-96 Ом, желтым (12 В)-264 Ом, зеленым (PS-on)-4.6 кОм, синим (-12 В)-2,2 кОм. Помогите , пожалуйста, запустить дежурку.
      Вот схема бп
    • ну раз так нравятся отладочные платы по цене и "бижутерии", то надо не траxать мозги людям на форуме, а покупать и ставить в свои устройства. В чем именно проблема то, я не понял?
    • Ланзар "красивый" просто.
      Весь такой симметричный......
      НО, мы то знаем! )
    • Захвалили, засмущали, ушел краснеть в уголок. В процессе поиска звука среди различных схемных решений и моей эволюции как сборщика этих самых УМ, этот проект получился очень удачным на мой взгляд. Во-первых отличным звуком, а во-вторых простотой в сборке и, что немаловажно, в наладке. Главным мотиватором стал Алексей ака Ulis.  Также очень помог в допиливании схемы до нонешнего вида Виктор Жуковский. Хотя сам он этот проект не жалует и отбрыкивается от него и всего наследия Никитина, но таки ему спасибо тоже. Усилитель, конечно, чисто домашний в плане мощности. Только одно это многих заставит пройти мимо этой схемы. Хотя 2*35 Вт на моей теперешней 8-ми Омной акустике,  в комнате 20 квадратов- это уже очень мощно и громко. Я слушаю не больше, чем на 15% от полной мощности. Ничуть не принижаю достоинства других усилителей, представленных на форуме, но этот простой проект действительно имеет отличный звук. Тем, кто уже наелся ПРОкиловаттников или усилителей на грани коррекции с возбудами и прочими прелестями, рекомендуется к повторению. Тем более бюджет у него более чем скромный, даже с теперешними ценами. А отличный питальник для него можно соорудить на основе ТПП312, что я и сделал. Трансформатор купил на форуме за 400 рублей. Вся прелесть этого простого усилителя, повторюсь, в отличном звуке при минимальной наладке. В общем и целом, можно не верить. А можно собрать и убедиться. Замеры чисто как приятный бонус, что может схема. В Ланзаре, столь популярном на форуме, вообще нет нулей после запятой на частотах выше 5 кГц.  Но его собирают сотнями.  
    • Да ладно... Единственная вероятная "порча" может состоять в том, что её может захватить чрезмерный интерес к паянию, превысив таковой к приготовлению винегрета и др. блюд. Хотя и это не особо страшно, т.к. у неё есть дочка, которая  всегда поможет по хозяйству, пока мать будет паять какую-то схему, или травить плату.