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

 
 
> Вывод заданного количества импульсов., Как правильно сделать?
Iptash
сообщение May 18 2011, 14:23
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Здравствуйте.
На первый взгляд вроде простая задача, но как то в голову не приходит как это правильно сделать. Вот допустим:
Код
always @ (negedge clock) begin
    result = A - B;
   end

Теперь нужно выдать пачку импульсов количеством равное result. И так все время между вычислением разности. Т.е. допустим первая разность 10 и теперь
на какой то частоте выдаются эти 10 импульсов. Следущая разность допустим 5 , выдаются 5 импульсов и т.д..
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bogaev_roman
сообщение May 18 2011, 14:51
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(Iptash @ May 18 2011, 18:23) *
Здравствуйте.
На первый взгляд вроде простая задача, но как то в голову не приходит как это правильно сделать. Вот допустим:
Код
always @ (negedge clock) begin
    result = A - B;
   end

Теперь нужно выдать пачку импульсов количеством равное result. И так все время между вычислением разности. Т.е. допустим первая разность 10 и теперь
на какой то частоте выдаются эти 10 импульсов. Следущая разность допустим 5 , выдаются 5 импульсов и т.д..

Я б сделал следующим образом:
Код
always @(posedge clk0) clock_r<=clock;//задержка тактовой на один такт новой частоты
always @(posedge clk0) imp_clocks<=~clock&clocks_r;//момент спада частоты в виде импульса на новой частоте

always @(posedge clk0)
     if (imp_clocks) begin
                         cnt_flag<={results,1'b0};//формируется счетчик в два раза больше, нежели results, который будет использоваться в качестве разрешающего сигнала для пачки импульсов
                         impuls<=1'b1;//начальное значение импульса
                         end
                         else begin
                               cnt_flag<=(|cnt_flag)?cnt_flag<=cnt_flag-1:cnt_flag;//уменьшение на единицу до тех пор пока не будет 0
                               impuls<=~impuls;//формирование самого импульса
                               end
assign pack_imp=(|cnt_flag)?impuls:1'b0;


Тут получатся импулсы с двойной частотой clk0, скважность вроде просто поменять. Чтоб метастабильности не было можно imp_clocks пропустить еще через дополнительный триггер.
Go to the top of the page
 
+Quote Post



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

 


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


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