Перейти к содержанию
    

Opensource аналог SignalTap, ChipScope

Коллеги, никогда не думал, что придется задаваться этим вопросом, но есть ли Opensource аналоги SignalTap, ChipScope?

Сейчас пытаюсь работать с ПЛИС GOWIN, но их GAO это жутко неудобная и глючная штука.

В последней доступной версии Synplify 2018.03 не нашел поддержки данных ПЛИС, так что вариант с использованием Identify не прокатил...

Очень не хочется изобретать свой велосипед.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, BSACPLD said:

Очень не хочется изобретать свой велосипед.

а придется)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у меня тоже не доступен СигналТап. Я снимал данные в какой нибудь буффер, выгонял их из ПЛИС в бинари файл и подгружал все это дело в modelsim, как в визуализаторе сигналов. За неимением СигналТапа это было жутко круто, чтобы не писать своего

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно про подгрузку в modelsim поподробнее? Как вы это делали?

И что это была за ПЛИС вообще без анализатора?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 minutes ago, BSACPLD said:

Можно про подгрузку в modelsim поподробнее? Как вы это делали?

И что это была за ПЛИС вообще без анализатора?

Буфер, любой переходник на усб, и операции файлового ввода-вывода в стимуляторе. Такое часто делают, когда жтаг забыли или его возможности недостаточны для отладки. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 minutes ago, BSACPLD said:

И что это была за ПЛИС вообще без анализатора?

альтера stratix v после кап ремонта. jtag так и не смог запустить, да и не сильно потом напрягался, через pcie все делаю по быстрому.

10 minutes ago, BSACPLD said:

Можно про подгрузку в modelsim поподробнее? Как вы это делали?

в плис сделал большой буфер, туда сохранял значения нужных мне сигналов, потом этот буфер выплевывал по какому нибудь интерфейсу побыстрее. В последнем варианте я логировал 96 бит данных, через 1g ehternet я его выплевывал udp протоколом. Это примерно 112 записей по 96 бит.
компьютер принимает пакет (можно самопис, можно сниффер wireshark) и сохраняет в файл. Файл я скармливал в modelsim с помощью скрипта. грубо говоря читал из файла по 12 байт (96 бит) и распихивал их по сигналам моделсима. Это как раз я отлаживал pcie сигналы

`timescale 1ns / 1ns
module main_test_bench_125_1; 
	//Сигналы для вывода на осцилограмму
	reg     	clk_250Mhz; 					//Осцилограмма генератора 250Mhz
	reg [31:0]	counter;
	reg [4:0]	ltssm;
	reg [3:0]	lane_active;
	reg			pcie_perst;
	reg			reconfig_busy;
	reg	[1:0]	power_down_0;
	reg	[1:0]	power_down_1;
	reg	[1:0]	power_down_2;
	reg	[1:0]	power_down_3;
	reg	[1:0]	power_down_4;
	reg	[1:0]	power_down_5;
	reg	[1:0]	power_down_6;
	reg	[1:0]	power_down_7;
	reg			tx_busy;
	reg			rx_busy;
	reg	[23:0]	timer_counter;
	reg			reset;
	reg			pld_use;
	reg			refclk_locked;
	reg			refclk;


	

	//Вспомогательные переменные
	integer 	file_log;						//Указатель на файл с логами

	initial
	begin
		//log_row_id_prev = 0;
		
		//Пытаемся открыть файл с логами
		file_log = $fopen("udp_dump.bin", "rb");
		if (file_log == 0) 
		begin
			$display("Log file open FAILED");
			$finish;
		end
		
		//Имитируем тактовый генератор 100Mhz
		clk_250Mhz  = 1'b0;			//Начальное значение 0
		#2;							//Задержка сигнала 5нс (100Mhz = такт 10нс, 5нс - полу такт)
		repeat(24999999)
		begin
			clk_250Mhz  = 1'b1;		//Ставим генератор в 1
			#2  clk_250Mhz  = 1'b0;	//Ждем 5нс и ставим генератор в 0, фактически имитируем сигнал 1 в течении 5нс
			#2;						//Ждем 5нс и ставим генератор в 1, фактически имитируем сигнал 0 в течении 5нс, получаем 1 такт длительностью 10нс
		end
		clk_250Mhz  = 1'b1;
		#2;
	end

	//На каждый такт генератора читаем данные из файла и выводим их в сигналы осцилограммы
	reg [7:0]	byte_1;
	reg [7:0]	byte_2;
	reg [7:0]	byte_3;	
	reg [7:0]	byte_4;	
	reg [7:0]	byte_5;	
	reg [7:0]	byte_6;	
	reg [7:0]	byte_7;	
	reg [7:0]	byte_8;	
	reg [7:0]	byte_9;	
	reg [7:0]	byte_10;	
	reg [7:0]	byte_11;	
	reg [7:0]	byte_12;	
	
	
	always @(posedge clk_250Mhz) 
	begin
		byte_1 = 0;
		byte_2 = 0;
		byte_3 = 0;
		byte_4 = 0;
		byte_5 = 0;
		byte_6 = 0;		
		byte_7 = 0;
		byte_8 = 0;
		byte_9 = 0;
		byte_10 = 0;
		byte_11 = 0;
		byte_12 = 0;
		
		$fread(byte_1, file_log);
		$fread(byte_2, file_log);
		$fread(byte_3, file_log);
		$fread(byte_4, file_log);
		$fread(byte_5, file_log);
		$fread(byte_6, file_log);
		$fread(byte_7, file_log);
		$fread(byte_8, file_log);
		$fread(byte_9, file_log);
		$fread(byte_10, file_log);
		$fread(byte_11, file_log);
		$fread(byte_12, file_log);
	
		if ({byte_1, byte_2, byte_3, byte_4, byte_5, byte_6, byte_7, byte_8, byte_9, byte_10, byte_11, byte_12} > 0) begin
			counter			= {byte_1[7:0], byte_2[7:0], byte_3[7:0], byte_4[7:0]};
			ltssm			= {byte_5[7:3]};
			lane_active		= {byte_5[2:0], byte_6[7]};
			pcie_perst		= byte_6[6];
			reconfig_busy	= byte_6[5];
			power_down_0	= byte_6[4:3];
			power_down_1	= byte_6[2:1];
			power_down_2	= {byte_6[0], byte_7[7]};
			power_down_3	= byte_7[6:5];
			power_down_4	= byte_7[4:3];
			power_down_5	= byte_7[2:1];
			power_down_6	= {byte_7[0], byte_8[7]};
			power_down_7	= byte_8[6:5];
			tx_busy			= byte_8[4];
			rx_busy			= byte_8[3];
			timer_counter	= {byte_8[2:0], byte_9[7:0], byte_10[7:0], byte_11[7:3]};
			reset			= byte_11[2];
			pld_use			= byte_11[1];
			refclk_locked	= byte_11[0];
			refclk			= byte_12[7];
		end
	end	
	
	initial
	#1000000000 $stop;			//После 1млрд наносекунд (=1 сек), заканчиваем моделирование
endmodule

 

Изменено пользователем new123

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

1 hour ago, BSACPLD said:

но есть ли Opensource аналоги SignalTap, ChipScope?

Я в теме new123  кидал ссылку на что то похожее на ChipScope на базе uart. 

Удачи! Rob.

 

  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, BSACPLD said:

... но есть ли Opensource аналоги SignalTap, ChipScope?

Очень не хочется изобретать свой велосипед.

Есть еще вот такой велосипед(ы):
1. https://opencores.org/projects/fpo

2. https://opencores.org/projects/openjtag-project

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 часа назад, new123 сказал:

компьютер принимает пакет (можно самопис, можно сниффер wireshark) и сохраняет в файл. 

Я в подобных случаях использую матлаб, он с UDP замечательно работает.

Никаких промежуточных файлов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

46 минут назад, one_eight_seven сказал:

Матлаб уже OpenSource?

Прочитайте внимательно цитату на которую я ответил. Матлаб я применяю не вместо SignalTap:nea:, а для приёма по сети ethernet захваченных данных и последующего парсинга.

Выше рекомендовали wireshark с сохранением в файл... В матлабе это делать проще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только я заностальгировал по рубежу веков, когда JTAG был еще не везде? :-)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую! 

On 3/23/2019 at 2:56 PM, _sda said:

Прочитайте внимательно цитату на которую я ответил. Матлаб я применяю не вместо SignalTap:nea:, а для приёма по сети ethernet захваченных данных и последующего парсинга.

Выше рекомендовали wireshark с сохранением в файл... В матлабе это делать проще.

оффтоп:  У меня один знакомый ставил matlab  чтобы им как калькулятором пользоваться  "... удобно мол - историю сохраняет ..." :wacko2:

На том же python прием по UDP/TCP  и запись в файл делается на десятке строк кода. Еще на паре десятков - realtime парсинг и рисовка картинок как в том же matlab.  Понятно дело если matlab  уже сп. стоит то грех добру пропадать  :biggrin:.

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Потом тоже реалпарсинг сделал, стало еще удобней. Только все на  с++. Modelsim если надо более подробно глянуть.

Изменено пользователем new123

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/22/2019 at 1:47 PM, BSACPLD said:

И что это была за ПЛИС вообще без анализатора?

Воронежская например. Еще бывает что невозможно подлючиться к jtag поскольку его сигналы не выведены наружу, а блок запаян.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...