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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Надо сформировать сложный сигнал, Подкиньте идейку...
torik
сообщение Dec 15 2009, 12:44
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Надо сформировать синхроимпульсы полного телевизионного сигнала PAL в соответсвии с ГОСТ. Там получается довольно сложная последовательность... Правда ширина сигнала всего 1 бит
Как красиво это сделать?

Первое, что приходит в голову, организовать конструкцию if else if else if else...
Но что получится когда эта конструкция будет включать пару десятков или даже больше таких последовательных условных операторов?


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 15 2009, 12:50
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(torik @ Dec 15 2009, 06:44) *
Надо сформировать синхроимпульсы полного телевизионного сигнала PAL в соответсвии с ГОСТ. Там получается довольно сложная последовательность... Правда ширина сигнала всего 1 бит
Как красиво это сделать?

Первое, что приходит в голову, организовать конструкцию if else if else if else...
Но что получится когда эта конструкция будет включать пару десятков или даже больше таких последовательных условных операторов?


лет 6 назад делал подобное на AHDL если мне память не изменяет на все ушло 2 счетчика + чуток логики %)


--------------------
Go to the top of the page
 
+Quote Post
torik
сообщение Dec 15 2009, 12:52
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Есть правда вариант все это промасштабировать и держать последовательность нулей и единиц в памяти...

Цитата
лет 6 назад делал подобное на AHDL если мне память не изменяет на все ушло 2 счетчика + чуток логики %)

Немного логики и счетчиков на "длинную" конструкцию if-else?


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
iosifk
сообщение Dec 15 2009, 13:08
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(torik @ Dec 15 2009, 15:44) *
Надо сформировать синхроимпульсы полного телевизионного сигнала PAL в соответсвии с ГОСТ. Там получается довольно сложная последовательность... Правда ширина сигнала всего 1 бит
Как красиво это сделать?

Первое, что приходит в голову, организовать конструкцию if else if else if else...
Но что получится когда эта конструкция будет включать пару десятков или даже больше таких последовательных условных операторов?

На самом деле, нужно только автомат состояний и перезагружаемый таймер...
Автомат загружает таймер последовательностями, которые и формируют длительности...
Удачи!
На самом деле, в Альтеровских файлах университетской программы это все расписано. Да и для ксайлинсовской тоже...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
torik
сообщение Dec 15 2009, 13:18
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Цитата
На самом деле, нужно только автомат состояний и перезагружаемый таймер...
Автомат загружает таймер последовательностями, которые и формируют длительности...
Удачи!

Идея понятна

Цитата
На самом деле, в Альтеровских файлах университетской программы это все расписано.

Если это на сайте альтеры, то как найти?


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
AndrewS6
сообщение Dec 15 2009, 13:23
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 125
Регистрация: 9-10-05
Из: С.-Петербург
Пользователь №: 9 418



Можно записать желаемую последовательность значений в память, счетчиком перебирать адрес.
Go to the top of the page
 
+Quote Post
torik
сообщение Dec 15 2009, 13:43
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Вспомнил, примерно так:

reg [6:0] State;
reg [19:0] Timer;
reg [19:0] TimerReg;


Код
always @(posedge CLK or negedge RESETn) begin
    if (!RESETn) begin
        State <= 0; SSP <= 1; TimerReg <= 0;
    end else begin
        if (Timer == 20'd0) begin
            case (State)
            0:    begin
                    SSP <= 1;
                    TimerReg <= 10;
                    State <= 1;
                end
            1:    begin
                    SSP <= 0;
                    TimerReg <= 2;
                    State <= 2;
                end
            2:    begin
                    SSP <= 1;
                    TimerReg <= 2;
                    State <= 3;
                end
            3:    begin
                    SSP <= 0;
                    TimerReg <= 3;
                    State <= 0;
                end
            endcase
        end
    end
end

always @(posedge CLK or negedge RESETn) begin
    if (!RESETn) begin
        Timer <= 0;
    end else begin
        if (Timer > 0) Timer <= Timer - 1'b1;
        else Timer <= TimerReg;
        
    end
end


У меня I2C конфигуратор так сделан был когда-то (содран)


Надо только довести до ума и параметризировать, еще не проверял...


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
iosifk
сообщение Dec 15 2009, 13:52
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(torik @ Dec 15 2009, 16:18) *
Идея понятна


Если это на сайте альтеры, то как найти?

а вот референс дизайн лежит у Альтеры...
http://www.altera.com/support/refdesigns/s...niosii-vga.html
это то?


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Shivers
сообщение Dec 15 2009, 13:52
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



Цитата(AndrewS6 @ Dec 15 2009, 16:23) *
Можно записать желаемую последовательность значений в память, счетчиком перебирать адрес.

Ширина 1 не самый оптимальный вариант для использования памяти. Иногда лучше расписать мультиплексорами или if/else всю последовательность в соответствие со значениями счетчика, а потом скормить синтезатору. Получится большая комбинаторная схема - функция адреса счетчика.
Я когда ROM делаю, всегда встает выбор - сделать на латчах как есть, без оптимизации, и получить потом возможность править в металле(ASIC), если будут ошибки, либо оптимизировать ROM в комбинаторную функцию адреса и получить малую площадь кристалла. Минус комбинаторной схемы - очень длинный путь, минус ROMа "как есть" - огромный кристалл. Выбор по ситуации )
Go to the top of the page
 
+Quote Post
Самурай
сообщение Dec 15 2009, 13:54
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066



Цитата(des00 @ Dec 15 2009, 15:50) *
лет 6 назад делал подобное на AHDL если мне память не изменяет на все ушло 2 счетчика + чуток логики %)


Аналогично, правда лет 10 назадsmile.gif. Генератор ч/б полос уместился в EPM3032, цветных в EPM3064. Один счетчик и несколько дешифраторовsmile.gif.
Go to the top of the page
 
+Quote Post
torik
сообщение Dec 15 2009, 14:17
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Цитата
а вот референс дизайн лежит у Альтеры...
http://www.altera.com/support/refdesigns/s...niosii-vga.html
это то?

Нет, это несколько проще.

А мне надо сформировать полный телевизионный сигнал, вернее его синхроимульсы).
Получаем 5 периодов одних импульсов, 5 периодов других, еще 1, еще 302 и т.д. Всего вроде 10 смен состояний. Каждое состояние должно включать определенное кол-во импульсов с заданными параметрами...


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
Shivers
сообщение Dec 15 2009, 15:51
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



набросал автомат, сделал бы что то вроде этого:
Код
wire DOUT;  // выход
//импульсы
wire [8:0] sample0 = 9'b100110011;
wire [2:0] sample1 = 3'b101;
......
wire [5:0] sample9 = 6'b110010;
//длины импульсов
wire [7:0] len0 = 8'h9, len1 = 8'h3, .. len9 = 8'h6;

reg [3:0] state;  //счетчик, номер последовательности
reg [7:0] count; //
reg [31:0] buf;  //стек для импульсов

always @(posedge clk or negedge resetn)
if(~resetn)
  begin
   state <= 4'h0;
   count <= 8'h0;
   buf[31:0] <= sample0;
  end
else
  begin
   if(state < 10)
   begin
    if(
       (state == 4'h0) & (count == len0) |
...
       (state == 4'h9) & (count == len9) )   //достигнут конец импульса
     begin
      state <= state + 1;       // смена номера импульса
      count <= 8'h0;             //обнуление указателя
      buf [31:0] <= ((state == 4'h0) & (count == len0)) ? sample0 :      //загрузка следющего ипульса
                             (((state == 4'h1) & (count == len1)) ? sample1 :
                                .........
                                sample9 ))))...))
     end
   else
    begin
     count <= count + 1;
     buf [31:0] <= buf [31:0] >> 1;  //сдвиг стека
    end
  end
else   state <= 4'h0; //полный цикл импульсов

assign DOUT = buf[0];

После синтеза будут два счетчика с кучей комбинаторики. Если на мегафункциях сделать, в ПЛИС должно работать относительно шустро.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Dec 15 2009, 16:25
Сообщение #13


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(iosifk @ Dec 15 2009, 17:08) *
На самом деле, нужно только автомат состояний и перезагружаемый таймер...
Автомат загружает таймер последовательностями, которые и формируют длительности...
Удачи!
На самом деле, в Альтеровских файлах университетской программы это все расписано. Да и для ксайлинсовской тоже...

а можете дать ссылку или привести пример
ЗЫ желательно на VHDL rolleyes.gif


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 16 2009, 04:13
Сообщение #14


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(torik @ Dec 15 2009, 08:17) *
А мне надо сформировать полный телевизионный сигнал, вернее его синхроимульсы).
Получаем 5 периодов одних импульсов, 5 периодов других, еще 1, еще 302 и т.д. Всего вроде 10 смен состояний. Каждое состояние должно включать определенное кол-во импульсов с заданными параметрами...


что там сложного то ? ПЦТС он простой как 3 рубля, все постоянно, счетчик строк, столбцов. все остальные синхроимпульсы легко привязываются к этим двум счетчикам %)

Или я не так понял задачу ? smile.gif


--------------------
Go to the top of the page
 
+Quote Post
iosifk
сообщение Dec 16 2009, 06:18
Сообщение #15


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Maverick @ Dec 15 2009, 19:25) *
а можете дать ссылку или привести пример
ЗЫ желательно на VHDL rolleyes.gif

разные файлы. Не мои, так что без претензий...
Прикрепленные файлы
Прикрепленный файл  BM_MODE_SVGA.zip ( 19.55 килобайт ) Кол-во скачиваний: 38
Прикрепленный файл  bm_mode_svga.pdf ( 7.26 килобайт ) Кол-во скачиваний: 49
Прикрепленный файл  vgaoutfiles.zip ( 18.1 килобайт ) Кол-во скачиваний: 33
Прикрепленный файл  VGA.PDF ( 294.27 килобайт ) Кол-во скачиваний: 39
Прикрепленный файл  vga_timing.rar ( 76.56 килобайт ) Кол-во скачиваний: 34
 


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post

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

 


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


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