Два указателя в аппаратной реализации ROM - PullRequest
0 голосов
/ 30 апреля 2018

ПЗУ реализуется оператором case для хранения в нем фиксированных значений и чтения их в любое время.

Но как я могу прочитать два значения в одном и том же тактовом цикле ??

1 Ответ

0 голосов
/ 30 апреля 2018

Всегда полезно показать хотя бы часть вашего кода. Я предполагаю, что у вас есть что-то вроде этого:

case (adrs)
8'h00 : dout <= 8h01;
8'h01 : dout <= 8h03;
8'h02 : dout <= 8h07;

Единственное решение состоит в том, чтобы сделать два идентичных оператора case, но проще создать экземпляр одного и того же ПЗУ дважды.

Альтернатива - создать память и инициализировать ее.

reg [7:0] mem [0:255];
... // initialise memory e.g
... // using initial with for loop and case statement    
   always @(posedge clk)
   begin
      dout1< = mem[adrs1];
      dout2< = mem[adrs2];
   end

Я предполагаю, что это для ПЛИС, поэтому посмотрите в руководстве производителя, как сделать предварительно загруженную ОЗУ. (На самом деле это ПЗУ, если вы не пишете в него)

...