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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Проэкт не работает в чипе..., В симуляции все ОК, в чипе не работает, может проблема с заданием ног
Саша Z
сообщение Sep 2 2008, 10:27
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Странная проблема возникла:
есть довольно простенький проэкт под Xilinx XCR3064CS48 CPLD. Проэкт драйвит некоторый електромагнит в системе.
Код на VHLD. Я вообще сижу на Латтисе, на данный момент временно требуется данный Xilinx (в дальнейшем он заменится на соотв. Латтисе, но пока это то что есть), посему дизайн симулирован в среде Lattice (Модельсимом для Латтиса), затем когда симуляция ОК - открываю ISE, синтезирую под XCR3064CS48 и т.д.
Есть UCF файл в проэкте в ISE где определил ноги чипа под сигналы.
Проблема в том что после прожига не работает в чипе. Прежняя версия того-же дизайна работала ОК, сейчас внес изменения в код (UCF не трогал) - на выходах ничего нет. Прожигаю старую версию - чип работает ОК (согласно старой версии ессно).

Проверяю в ISE насчет констрейнов ног: содержимое UCF имеет описание всех ног, тогда как в окне где UCF разбивается на части (Timing COntraints таб) - два выхода из четырех вроде как не определены в плане ног.

Присоединены screenshots того о чем говорю. Также присоединен source VHDL как reference - хотя симуляция показывает что код вроде работает ОК.

Со средой ISE знаком плохо, да и нет намерения углубленно изучать ее ибо Латтисе удовлетворяте потребости, может что-то не определено для проэкта в ISE и посему не работает в чипе ?

Заранее благодарен за помощь.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  Driver.vhd ( 4.51 килобайт ) Кол-во скачиваний: 138
 
Go to the top of the page
 
+Quote Post
sazh
сообщение Sep 2 2008, 11:37
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Саша Z @ Sep 2 2008, 14:27) *
Со средой ISE знаком плохо, да и нет намерения углубленно изучать ее ибо Латтисе удовлетворяте потребости, может что-то не определено для проэкта в ISE и посему не работает в чипе ?


Ради интереса в квартусе прогнал. Куча предупреждений, на неполный список чувствительности процесса. Что интересно, реализвция зависит от типа кристалла (CPLD, FPGA)
лачи в RTL какие то бессмысленные.
Go to the top of the page
 
+Quote Post
Саша Z
сообщение Sep 2 2008, 11:59
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(sazh @ Sep 2 2008, 14:37) *
Ради интереса в квартусе прогнал. Куча предупреждений, на неполный список чувствительности процесса. Что интересно, реализвция зависит от типа кристалла (CPLD, FPGA)
лачи в RTL какие то бессмысленные.


Да, дополнил списки чуствительности в процессы. Прогнал опять, не помогло...
Вариант без счетчиков - работает в чипе ОК. Код варианта без счетчиков присоединен...
Прикрепленные файлы
Прикрепленный файл  Driver_original.vhd ( 3.63 килобайт ) Кол-во скачиваний: 52
 
Go to the top of the page
 
+Quote Post
sazh
сообщение Sep 2 2008, 12:47
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Саша Z @ Sep 2 2008, 15:59) *
Да, дополнил списки чуствительности в процессы. Прогнал опять, не помогло...
Вариант без счетчиков - работает в чипе ОК. Код варианта без счетчиков присоединен...


Почему не работает Ваш - не знаю. Вряд ли от ного зависит. Но и работающий никуда не годится.
Нет там during system power-up. Закладка на синтезатор и тип семейства. (Скорее всего этот коре ду все же fpga по сути).
Скачайте xst.pdf и реализуйте в стиле декодера. У Вас же всего 8 входных состояний (MOTIN0 не используется), простробированных триггерами.
По идее каждый входной сигнал принять на 2 триггера по клоку. Реализовать case на 8 состояний для каждого из 4 выходов и простробировать выходными триггерами. Чего проще.
А power - up по нулям, так это от структуры кристалла зависит. Если это флеш, то номер наверно не пройдет.
Go to the top of the page
 
+Quote Post
Саша Z
сообщение Sep 2 2008, 13:59
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(sazh @ Sep 2 2008, 15:47) *
Почему не работает Ваш - не знаю. Вряд ли от ного зависит. Но и работающий никуда не годится.
Нет там during system power-up. Закладка на синтезатор и тип семейства. (Скорее всего этот коре ду все же fpga по сути).
Скачайте xst.pdf и реализуйте в стиле декодера. У Вас же всего 8 входных состояний (MOTIN0 не используется), простробированных триггерами.
По идее каждый входной сигнал принять на 2 триггера по клоку. Реализовать case на 8 состояний для каждого из 4 выходов и простробировать выходными триггерами. Чего проще.
А power - up по нулям, так это от структуры кристалла зависит. Если это флеш, то номер наверно не пройдет.


Да, отсутствие power-up reset это мне известно. Увы, борд был спроэктирован подрядчиком, я унаследовал то что получилось, оживлял/изправлял его. На борту есть данный CPLD, их конкретный дизайн - полностью асинхронный, безо-всякого power-up reset. Спасибо им за то что хотя-бы удосужились вставить clk (которым они не пользовались в дизайне). Входа reset нет физически. Посему и извращался пытаясь каким-то образом задать обнулевку счетчика по началу работы...

Возможно не будет выхода и придется прособачить внешний RC от power на какию-нит торчащую свободную ногу чипа в качестве power-up reset системы...
Go to the top of the page
 
+Quote Post
sazh
сообщение Sep 2 2008, 14:22
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Саша Z @ Sep 2 2008, 17:59) *
На борту есть данный CPLD, их конкретный дизайн
Возможно не будет выхода и придется прособачить внешний RC от power на какию-нит торчащую свободную ногу чипа в качестве power-up reset системы...


Посмотрите на самом ли деле это структура CPLD. Сейчас модно структуру скрывать.
Да и у xilinx своя система установки начального состояния. Если регистры можно по включению питания в ноль установить, то и внутренний сигнал обнуления по клоку тоже можно сформировать.
Тогда и Ваша инициапизация в описании сигналов работать будет.
Надо только позаботиться, чтобы синтезатор не оптимизировал эту один раз срабатывающую структуру.


module power_up // Power-Up Don't Care - off
(
input clk,
output reg reset_power_up_n
);

reg [9:0] cnt_power_up;

always @(posedge clk)
begin
if (cnt_power_up == 10'd1023) reset_power_up_n <= 1'b1;
if (cnt_power_up != 10'd1023) cnt_power_up <= cnt_power_up + 1'b1;
end

endmodule
Go to the top of the page
 
+Quote Post
Саша Z
сообщение Sep 2 2008, 20:00
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(sazh @ Sep 2 2008, 18:22) *
Посмотрите на самом ли деле это структура CPLD. Сейчас модно структуру скрывать.
Да и у xilinx своя система установки начального состояния. Если регистры можно по включению питания в ноль установить, то и внутренний сигнал обнуления по клоку тоже можно сформировать.
Тогда и Ваша инициапизация в описании сигналов работать будет.
Надо только позаботиться, чтобы синтезатор не оптимизировал эту один раз срабатывающую структуру.
module power_up // Power-Up Don't Care - off
(
input clk,
output reg reset_power_up_n
);

reg [9:0] cnt_power_up;

always @(posedge clk)
begin
if (cnt_power_up == 10'd1023) reset_power_up_n <= 1'b1;
if (cnt_power_up != 10'd1023) cnt_power_up <= cnt_power_up + 1'b1;
end

endmodule


Сейчас подумалось - возможно есть толика истины в вашем предположени зависимости power-up установки регистров от технологии...
Я ведь как и упоминал симулировал под CPLD Латтиса а затем пере-синтезировал под Xilinx и прожигал. Возможно структура Xilinxа отлихается от Lattice и в плане началчной установки регистро по power-up и тогда вполне естественно симуляция под Lattice не дааст уверенности в результате под другого производителя.... cranky.gif
Кроме того, я не уверен покажет учитывает-ли симулятор power-up setup регистров конкретного семейства которое он симулирует...при отсутствии implied/forced внешнего reset ??

А, стоп, мало того - я-то симулировал только functional, забыл про post-route....
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Sep 3 2008, 06:57
Сообщение #8


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



Цитата(sazh @ Sep 2 2008, 15:37) *
Ради интереса в квартусе прогнал. Куча предупреждений, на неполный список чувствительности процесса. Что интересно, реализвция зависит от типа кристалла (CPLD, FPGA)
лачи в RTL какие то бессмысленные.


я в основном все процессы делаю синхронными и в список чувствительности вписываю только клок
ни разу проблем не было

у ксайлинкса действительно все регистры изначально ставятся в ноль если не указать типа := '1'
Go to the top of the page
 
+Quote Post
Саша Z
сообщение Sep 3 2008, 07:44
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(sazh @ Sep 2 2008, 15:37) *
лачи в RTL какие то бессмысленные.


Да, без пояснений оно не совсем понянто со стороны:
в системе есть проблема в том что при power-up срабатывает ложная комманда на на включение одного из режимов (видимо в результате влияния включения питания на конфигурацию системы которая драйвит данный CPLD), посему нужно было сделать что-то что-бы заблокировало первый sequence комманд (ложный). Посему получились latches о который и кручал синтезатор.

Цитата(rv3dll(lex) @ Sep 3 2008, 10:57) *
я в основном все процессы делаю синхронными и в список чувствительности вписываю только клок
ни разу проблем не было

у ксайлинкса действительно все регистры изначально ставятся в ноль если не указать типа := '1'


вообще-то стандарт рекоммендует иказывать полный sense list в процессе. Не уверен на что повлияет не полное указание сигналов в списке, но я в принципе, как минимум в качестве начинающего, стараюсь приделживаться стандарта (когда не забываю...). Иногда забываю все релевантные сигналы внести в список, получаю warnings, но до сих пор все работало и так...
Интересно на что влияет не полный список чуствительности... cranky.gif
Go to the top of the page
 
+Quote Post
sazh
сообщение Sep 3 2008, 07:58
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Саша Z @ Sep 3 2008, 11:44) *
Да, без пояснений оно не совсем понянто со стороны:

Интересно на что влияет не полный список чуствительности... cranky.gif


Со стороны все и так понятно. От ложной команды на время устаканивания системы можно избавиться, подставив свою нужную команду. Введя входные триггера и установив (в интервале нужной длительности временного интервала) после включения питания на них нужные значения.
Лачи у Вас появились не сознательно, а от не корректного описания проекта.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Sep 3 2008, 08:02
Сообщение #11


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

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



Цитата(Саша Z @ Sep 3 2008, 10:44) *
Интересно на что влияет не полный список чуствительности... cranky.gif


Насколько я понимаю не полный список чуствительности влияет только на моделирование, а на синтез не влияет, т.е. моделирование на разных уровнях при не полном списке чуствительности могут отличаться

З.Ы. Где-то на форуме этот вопрос поднимался


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

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
BSV
сообщение Sep 3 2008, 08:27
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 541
Регистрация: 11-04-05
Из: Москва
Пользователь №: 4 045



А временнОе моделирование автор делал? Еще интересный вопрос - как соотносятся с тактовым сигналом по времени управляющие входы?
Кроме того, триггеры и выходные сигналы MPH2 и MPH3 очевидно эквивалентны MPH0 и MPH1 соответственно, поэтому выбрасываются синтезатором.


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post
Саша Z
сообщение Sep 3 2008, 09:18
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(sazh @ Sep 3 2008, 11:58) *
Со стороны все и так понятно. От ложной команды на время устаканивания системы можно избавиться, подставив свою нужную команду. Введя входные триггера и установив (в интервале нужной длительности временного интервала) после включения питания на них нужные значения.
Лачи у Вас появились не сознательно, а от не корректного описания проекта.



Да, ессно, latchи появились в результате описания, трудно не согласиться.
Вы имеете ввиду управлять flip-flopами синхронизации входных сигналов управления ? Т.е. например держать их в resetе на протяжении начального временного интервала в течении которого появляется ложная комманда ?
Go to the top of the page
 
+Quote Post
sazh
сообщение Sep 3 2008, 09:43
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Саша Z @ Sep 3 2008, 13:18) *
Да, ессно, latchи появились в результате описания, трудно не согласиться.
Вы имеете ввиду управлять flip-flopами синхронизации входных сигналов управления ? Т.е. например держать их в resetе на протяжении начального временного интервала в течении которого появляется ложная комманда ?


Да. Только не в ресете. А по сформированному ресету в нужном Вам состоянии. А лачи наверно из за неполного описания состояний в case. Надо или полное или состояния по умолчанию.
Go to the top of the page
 
+Quote Post
Саша Z
сообщение Sep 3 2008, 10:01
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(BSV @ Sep 3 2008, 12:27) *
А временнОе моделирование автор делал? Еще интересный вопрос - как соотносятся с тактовым сигналом по времени управляющие входы?
Кроме того, триггеры и выходные сигналы MPH2 и MPH3 очевидно эквивалентны MPH0 и MPH1 соответственно, поэтому выбрасываются синтезатором.


Временное моделирование сделал сейчас только - но тоже для Lattice (нет симулятора для Xilinxа) - все тоже самое...
По входам упрявляющие сигналы никак не синхронизированы с клоком чипа, посему кака видимо правильно советовал sazh - неплохо-бы их засинхронизировать перед вводом в логику.
MPH1 и MPH3, MPH0 и MPH2 запараллелены вместе, так должно быть. Нет проблем если синтезатор выбросит логику паралельных выходов и просто подсоединит параллельные выходы к своим ногам..
Go to the top of the page
 
+Quote Post

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

 


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


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