Jump to content

    

andrei-sedov

Новичок
  • Content Count

    3
  • Joined

  • Last visited

Everything posted by andrei-sedov


  1. Это понятно, что ОЗУ теряет свое содержимое после выключения питания, но например ПЛИС Altera позволяет строить из своих блоков RAM память типа ROM. В этом случае блоки RAM инициализируются на этапе конфигурации ПЛИС и в дальнейшем данные неизменно хранятся и доступны для чтения. Синтезатор распознает приведенное выше описание модуля констант как память типа ROM и размещает данные в блоках RAM. Хотелось бы знать имеется ли подобная технология в ПЛИС семействе ProASIC3E? P.S. Как я уже писал, в синтезаторе Synplify Pro имеется директива определяющая тип построения памяти: syn_romstyle = "URAM|lsram|..." Неужели никто не работал с массивами констант, перекодирующими таблицами и т.д.?
  2. Не уверен, но это стандартное описание ROM-памяти, можно сделать регистровый выход или выход. Вопрос в том можно ли вообще реализовать память типа ROM на встроенных блоках памяти?
  3. Здравствуйте. С недавнего времени осваиваю разработку проектов под ПЛИС для семейства ProASIC3E (ранее имел дело только с Altera и Xilinx) и столкнулся с проблемой нехватки информации и технической поддержке. В моем проекте имеется два процессорных ядра каждое из которых имеет память ROM 4096x32 инструкций. В результате разводки выдается ошибка: Error: [fail_to_route]: Router fails. Shorts = 6407. Open nets = 0. Я подозреваю, что не хватает каких то ресурсов. Где посмотреть что это значит? Синтез проекта проходит нормально: Core Cells : 46826 of 75264 (62%) IO Cells : 46 RAM/ROM Usage Summary Block Rams : 79 of 112 (70%) Скажите пожалуйста можно ли в семействе ProASIC3E реализовать память типа ROM на встроенный блоках памяти (RAM) по аналогии как в ПЛИС Altera? Директива синтезатора Synplify Pro: synthesis syn_romstyle = "lsram" — не дает результата (память реализуется на логический элементах). Пример: module rom1(clk, addr, q)/* synthesis syn_romstyle = "lsram" */; input clk; input [11:0] addr; output [31:0] q; reg [31:0] m; reg [31:0] q; always @(posedge clk) begin q[31:0] <= m[31:0]; end always @(*) begin case (addr[11:0]) 12'h000 : m[31:0] = 32'hA0FC0000; 12'h001 : m[31:0] = 32'hA0FE0000; 12'h002 : m[31:0] = 32'hA0FD0000; 12'h003 : m[31:0] = 32'h04FF0000; 12'h004 : m[31:0] = 32'h00000100; 12'h005 : m[31:0] = 32'h6BFCFCFC; ... Синтезатор понимает, что это ROM: @N: MO106 :"f:\project\microsemi\core\hdl\rom1.v":19:1:19:4|Found ROM .delname. (in view: work.rom1(verilog)) with 4096 words by 32 bits. Заранее благодарен за любую оказанную помощь в моей проблеме.