Видеотехника Ремонт телевизоров, видео, DVD-проигрывателей. Разработка систем видеонаблюдения. |
15.02.2011, 00:40
|
#41
|
Временная регистрация
Регистрация: 08.12.2006
Сообщений: 84
Сказал спасибо: 5
Сказали Спасибо 13 раз(а) в 10 сообщении(ях)
|
Re: Выделение синхросмеси без использования ИМС
Исходя из того, что вкладывать один в другой оператор IF...THEN нельзя, пришлось исхитриться следующим образом. Итак, готовый HDL скрипт генератора полного видеосигнала для протеуса получился таким:
Код:
|
FLOAT TSTEP=0.000002
FLOAT R
FLOAT R1
FLOAT R2
FLOAT R3
FLOAT R4
FLOAT CNT
INT LCNT
INT LINE
REM Sync level
FLOAT LS=0
REM Blanking level
FLOAT LG=0.3
REM Black level
FLOAT LB=0.35
REM White level
FLOAT LW=1
ON TIMER AT TSTEP EVERY TSTEP
CNT=ROUND(REALTIME/TSTEP)%20000
LCNT=CNT%32
LINE=(CNT/32-FRAC(CNT/32))+1
//simple lines
IF LCNT‹1 THEN
R1=LG
ELIF LCNT‹3
R1=LS
ELIF LCNT‹6
R1=LG
ELSE
R1=SIN(PI/8*LCNT)*(LW-LB)/2+(LB+LW)/2
ENDIF
//field sync
IF LCNT‹14 THEN
R2=LS
ELIF LCNT‹16
R2=LG
ELIF LCNT‹30
R2=LS
ELSE
R2=LG
ENDIF
//equalisation pulses
IF LCNT‹1 THEN
R3=LS
ELIF LCNT‹16 THEN
R3=LG
ELIF LCNT‹17 THEN
R3=LS
ELSE
R3=LG
ENDIF
//blanc lines
IF LCNT‹1 THEN
R4=LG
ELIF LCNT‹3
R4=LS
ELSE
R4=LG
ENDIF
IF LINE=1 OR LINE=2 THEN
R=R2
ELIF LINE=3 AND LCNT‹16 THEN
R=R2
ELIF LINE=3 AND LCNT›=16 THEN
R=R3
ELIF LINE=4 OR LINE=5 THEN
R=R3
ELIF LINE‹23 THEN
R=R4
ELIF LINE=23 AND LCNT‹16 THEN
R=R4
ELIF LINE=23 AND LCNT›=16 THEN
R=R1
ELIF LINE=311 OR LINE=312 THEN
R=R3
ELIF LINE=313 AND LCNT‹16 THEN
R=R3
ELIF LINE=313 AND LCNT›=16 THEN
R=R2
ELIF LINE=314 OR LINE=315 THEN
R=R2
ELIF LINE=316 OR LINE=317 THEN
R=R3
ELIF LINE=318 AND LCNT‹16 THEN
R=R3
ELIF LINE=318 AND LCNT›=16 THEN
R=R4
ELIF LINE›318 AND LINE‹336 THEN
R=R4
ELIF LINE=623 AND LCNT‹16 THEN
R=R1
ELIF LINE=623 AND LCNT›=16 THEN
R=R3
ELIF LINE=624 OR LINE=625 THEN
R=R3
ELSE
R=R1
ENDIF
ENDON
OUT=R
END |
Чтобы он заработал, генератор нужно назвать "OUT".
Единственное отступление от стандарта заключается в том, что все импульсы кратны 2 мкс. Т.е., импульсы кадровой синхронизации длятся 4мкс, а не 4.7, как в стандарте и т.д.
|
|
|
|
15.02.2011, 00:45
|
#42
|
Временная регистрация
Регистрация: 08.12.2006
Сообщений: 84
Сказал спасибо: 5
Сказали Спасибо 13 раз(а) в 10 сообщении(ях)
|
Re: Выделение синхросмеси без использования ИМС
Сообщение от Kabron
|
После того как я поправил выражение для CNT (с доп. скобками или послед деление) все ошибки исчезли, но CNT=0.
|
Ошибка исчезла потому, что на основе CNT вычислялся LINE, если CNT всегда 0, то LINE всегда 1, а вложенный один в другой IF...THEN исполнялся, только когда LINE=4. Оставьте CNT равным нулю и так же зафиксируйте LINE=4, ошибка произойдет сразу же.
Проверяйте лучше новый скрипт
|
|
|
|
15.02.2011, 01:01
|
#43
|
Почётный гражданин KAZUS.RU
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,540
Сказал спасибо: 698
Сказали Спасибо 4,315 раз(а) в 1,979 сообщении(ях)
|
Re: Выделение синхросмеси без использования ИМС
Если оставит старую запись выражения, то ошибка появляется как раз после 20мс, те времени полного кадра. До этого симуляция идет нормально.
|
|
|
|
15.02.2011, 01:10
|
#44
|
Почётный гражданин KAZUS.RU
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,540
Сказал спасибо: 698
Сказали Спасибо 4,315 раз(а) в 1,979 сообщении(ях)
|
Re: Выделение синхросмеси без использования ИМС
Запустил твой новый скрипт. На осцилле ничего. Датчик напряжения на выходе показывает на уровне 2*10^7.
|
|
|
|
15.02.2011, 01:10
|
#45
|
Временная регистрация
Регистрация: 08.12.2006
Сообщений: 84
Сказал спасибо: 5
Сказали Спасибо 13 раз(а) в 10 сообщении(ях)
|
Re: Выделение синхросмеси без использования ИМС
Да фиг с ним, новый скрипт-то устраивает?
|
|
|
|
15.02.2011, 01:11
|
#46
|
Временная регистрация
Регистрация: 08.12.2006
Сообщений: 84
Сказал спасибо: 5
Сказали Спасибо 13 раз(а) в 10 сообщении(ях)
|
Re: Выделение синхросмеси без использования ИМС
Поправьте тригер на осциллографе. Или попробуйте графиком, как у меня на скриншете.
|
|
|
|
15.02.2011, 01:14
|
#47
|
Временная регистрация
Регистрация: 08.12.2006
Сообщений: 84
Сказал спасибо: 5
Сказали Спасибо 13 раз(а) в 10 сообщении(ях)
|
Re: Выделение синхросмеси без использования ИМС
Вкладываю весь проект.
|
|
|
|
15.02.2011, 01:15
|
#48
|
Почётный гражданин KAZUS.RU
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,540
Сказал спасибо: 698
Сказали Спасибо 4,315 раз(а) в 1,979 сообщении(ях)
|
Re: Выделение синхросмеси без использования ИМС
kaf-0, в личку глянь, подарочек тебе подогнал.
|
|
|
|
15.02.2011, 01:23
|
#49
|
Почётный гражданин KAZUS.RU
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,540
Сказал спасибо: 698
Сказали Спасибо 4,315 раз(а) в 1,979 сообщении(ях)
|
Re: Выделение синхросмеси без использования ИМС
![Улыбка](images/smilies/icon_smile.gif) Гуд. Теперь осталось только цветовые поднесущие добавить
|
|
|
|
15.02.2011, 12:44
|
#50
|
Временная регистрация
Регистрация: 08.12.2006
Сообщений: 84
Сказал спасибо: 5
Сказали Спасибо 13 раз(а) в 10 сообщении(ях)
|
Re: Выделение синхросмеси без использования ИМС
Сообщение от Kabron
|
Гуд. Теперь осталось только цветовые поднесущие добавить
|
Могу конечно попробовать побаловаться, сделать поднесущие отдельным генератором, а потом их идеальным сумматором сложить, только мне нужно внятное описание цветной составляющей сигнала. В будущем и мне самому это пригодится.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:19.
|
|