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

 
 
> Вывод заданного количества импульсов., Как правильно сделать?
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
Ответов
Iptash
сообщение May 19 2011, 09:42
Сообщение #2


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

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



Спасибо. Дайте пожалуйста адрес сайта. Вот написал код, для положительного результата выдаются импульсы по plus, а по отрицательному результату по minus. Но
мне кажется есть более красивое решение.
Код
module subb
(
  input shortint  A,
  input shortint  B,
  input bit clock, clk,
  output shortint result,
  output logic plus, minus
);

shortint i1, i2;
bit sos, plus1, plus2, minus1, minus2;


always_ff @ (negedge clock) begin
  result <= A - B;
  sos <= ~sos;
end

always @ (posedge clk) begin
   if(sos) begin  
     if(i1 < result) begin
      plus1 <= ~plus1;
      if(plus1)
       i1 <= i1 + 1'b1;
     end else if(i1 > result) begin
      minus1 <= ~minus1;
      if(minus1)
       i1 <= i1 - 1'b1;
     end  
   end else
   i1 <= 0;  
end      

  always @ (posedge clk) begin
   if(!sos) begin  
     if(i2 < result) begin
      plus2 <= ~plus2;
      if(plus2)
       i2 <= i2 + 1'b1;
      end else if(i2 > result) begin
       minus2 <= ~minus2;
       if(minus2)
         i2 <= i2 - 1'b1;
     end    
   end else
   i2 <= 0;  
end

assign plus = sos ? plus1 : plus2;
assign minus = sos ? minus1 : minus2;

endmodule


Вот результат в симуляторе.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:11
Рейтинг@Mail.ru


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