aLvui1 0 13 ноября, 2021 Опубликовано 13 ноября, 2021 · Жалоба Приветствую всех, работаю над подключением внешней SRAM памяти (cy7c1470v33) к ПЛИС (spartan 6) на частоте 100 МГц. Возникла проблема некорректной записи данных в память, к сожалению, сейчас нет возможности приложить осциллограммы с chipscope. Используемые модули: module w1(input clk, output reg [4:0] A1=0, output reg WE2=0, output reg ab, inout [15:0] ab1 );(* EQUIVALENT_REGISTER_REMOVAL="NO"*) reg [8:0] p=0; (* EQUIVALENT_REGISTER_REMOVAL="NO"*) reg [8:0] p1=0; (* EQUIVALENT_REGISTER_REMOVAL="NO"*) reg [15:0] t1=16'b0; (* EQUIVALENT_REGISTER_REMOVAL="NO"*) reg [15:0] a1=16'b0; (* EQUIVALENT_REGISTER_REMOVAL="NO"*) reg [15:0] g1=16'b0; (* EQUIVALENT_REGISTER_REMOVAL="NO"*) reg [15:0] h1=0; assign ab1=p<34?t1:16'bzzzzzzzzzzzzzzzz;//заполнение и чтение блока адресов always @(posedge clk) begin WE<=(p1<32)?0:1; g1<=(p>14&&p<32)?g1+2:0; A1<=(A1<15)?A1+1:0; if (p<50) p<=p+1; else p<=50; if (p1<50) p1<=p1+1; else p1<=50; a1<=g1; h1<=a1; t1<=h1; //ab<=ab1; end endmodule module w2( input clk, input [15:0] ab1, output reg [4:0] A2=5'b0, output reg WE=0, output [15:0] abb, inout [15:0] ab2=16'b0 );(* EQUIVALENT_REGISTER_REMOVAL="NO"*) reg [8:0] j=0; (* EQUIVALENT_REGISTER_REMOVAL="NO"*) reg [8:0] j1=0; (* EQUIVALENT_REGISTER_REMOVAL="NO"*) reg [8:0] j2=0; reg [15:0] abb=16'b0; (* EQUIVALENT_REGISTER_REMOVAL="NO"*) reg [15:0] t2=16'b0; (* EQUIVALENT_REGISTER_REMOVAL="NO"*) reg [15:0] a2=16'b0; (* EQUIVALENT_REGISTER_REMOVAL="NO"*) reg [15:0] aa2=16'b0; (* EQUIVALENT_REGISTER_REMOVAL="NO"*) reg [15:0] g2=16'b1; (* EQUIVALENT_REGISTER_REMOVAL="NO"*) reg [15:0] h2=0; assign ab2=(j1<19)?t2:16'bzzzzzzzzzzzzzzzz;//заполнение и чтение блока результата always @(posedge clk) begin WE2<=(j<15)?0:1; if (j<50) j<=j+1; else j<=50; if (j1<50) j1<=j1+1; else j1<=50; if (j2<50) j2<=j2+1; else j2<=50; A2<=(j2<15)?(A2+1):ab1; g2<=(j2<15)?g2*2:1; a2<=g2; h2<=a2; t2<=h2; end endmodule Используется 2 микросхемы памяти, которые взаимодействуют между собой через ПЛИС. В одну записываются адреса, а другая читает данные по этим адресам. ab1, ab2 это двусторонние шины данных, первые 32 такта для w1 и 16 тактов для w2 идет запись сигналов, а затем чтение, WE,WE2- управляют чтением и записью, A1,А2 - адреса. Также я столкнулся с проблемой: chipscope не видит шины данных. Осциллограф показывал что сигнал на шинах есть. Заранее благодарю за помощь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 13 ноября, 2021 Опубликовано 13 ноября, 2021 · Жалоба 2 направленные шины (как у вас данные) реально в FPGA не существуют. Синтезатор раскладывает цепи чтения и записи данных на разные провода и вставляет реальный буфер, подключённый к ним. Поставьте этот буфер явно и разделите направления чтения и записи - тогда они будут реальными сигналами и chipscope их увидит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Longiel 2 16 ноября, 2021 Опубликовано 16 ноября, 2021 · Жалоба 13.11.2021 в 14:41, aLvui1 сказал: Используется 2 микросхемы памяти, которые взаимодействуют между собой через ПЛИС. В одну записываются адреса, а другая читает данные по этим адресам. Мне кажется как-то сложновато для начала работы с неизвестными устройствами. Я бы сначала написал простой модуль, который бы пробежавшись по всем адресам одной микросхемы отправлял и вычитывал какой-нибудь байт данных. Делаете сравнение отправки\получения и выводите это в сигнал ошибки, который можно чипскопом захлопывать. Так можно отладить обмен с памятью, да заодно и саму память проверить. Если микросхема допускает я бы так же все опыты проводил на частоте мегагерц 20, чтобы уж гарантированно на времянку не попасть. 13.11.2021 в 14:41, aLvui1 сказал: Также я столкнулся с проблемой: chipscope не видит шины данных. Выше уже ответили - нужно поставить управляемый двунаправленный буфер. Коммутировать его придётся самому, но зато в чипскоп можно будет вывести индивидуально линии данных на него и от него. Однако если залезть в RTL, то можно эти линии данных увидеть и при вашей реализации, но, мне кажется, не стоит оно того - искать отдельные сигналы 32-битной шины, названия которым синтезатор сам дал... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 168 17 ноября, 2021 Опубликовано 17 ноября, 2021 · Жалоба 13.11.2021 в 14:41, aLvui1 сказал: проблема некорректной записи данных в память В какой строке у Вас отрабатывается требуемое ею tDH? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться