Контроллер статической памяти на ПЛИС

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
jovanny
Открыл глаза
Сообщения: 46
Зарегистрирован: Вт дек 02, 2008 15:25:53
Контактная информация:

Контроллер статической памяти на ПЛИС

Сообщение jovanny »

Уважаемые участники форума,подскажите как реализовать контроллер статической памяти начинающему ПЛИСоводу,как допустим релизовать необходимые временные задержки управляющих сигналов,выставление на необходимые линии адресов и данных.
Старый Бабай
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Ср окт 29, 2008 12:23:21

Сообщение Старый Бабай »

Какая плисина?
И в чем пишешь?
Verilog или VHDL?
Старый Бабай
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Ср окт 29, 2008 12:23:21

Сообщение Старый Бабай »

посмотри тут
[url]
http://www.asic-world.com/examples/syst ... sr_sw.html[/url]
jovanny
Открыл глаза
Сообщения: 46
Зарегистрирован: Вт дек 02, 2008 15:25:53
Контактная информация:

Сообщение jovanny »

Старый Бабай писал(а):посмотри тут
[url]
http://www.asic-world.com/examples/syst ... sr_sw.html[/url]

К сожалению страница не открывается
Старый Бабай
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Ср окт 29, 2008 12:23:21

Сообщение Старый Бабай »

Код: Выделить всё


  1 //=======
  2 // Function : Synchronous read write RAM
  3 // Coder    : Deepak Kumar Tala
  4 // Date     : 1-Nov-2005
  5 //=======
  6 module ram_sp_sr_sw #(parameter DATA_WIDTH = 8,
  7                   parameter ADDR_WIDTH = 8,
  8                   parameter RAM_DEPTH = (1 << ADDR_WIDTH))(
  9 input  wire                  clk      , // Clock Input
 10 input  wire [ADDR_WIDTH-1:0] address  , // Address Input
 11 inout  wire [DATA_WIDTH-1:0] data     , // Data bi-directional
 12 input  wire                  cs       , // Chip Select
 13 input  wire                  we       , // Write Enable/Read Enable
 14 input  wire                  oe         // Output Enable
 15 );
 16 //---------- variables----------------
 17 reg [DATA_WIDTH-1:0]   data_out ;
 18 // Use Associative array to save memory footprint
 19 typedef reg [ADDR_WIDTH-1:0] mem_addr;
 20 reg [DATA_WIDTH-1:0] mem [mem_addr];
 21
 22 //---------- Starts Here------------------
 23 // Tri-State Buffer control
 24 // output : When we = 0, oe = 1, cs = 1
 25 assign data = (cs && oe &&  ! we) ? data_out : 8'bz;
 26
 27 // Memory Write Block
 28 // Write Operation : When we = 1, cs = 1
 29 always @ (posedge clk)
 30 begin : MEM_WRITE
 31    if ( cs && we ) begin
 32        mem[address] = data;
 33    end
 34 end
 35
 36 // Memory Read Block
 37 // Read Operation : When we = 0, oe = 1, cs = 1
 38 always @ (posedge clk)
 39 begin : MEM_READ
 40     if (cs &&  ! we && oe) begin
 41          data_out = mem[address];
 42     end
 43 end
 44
 45 endmodule // End of Module ram_sp_sr_sw


jovanny
Открыл глаза
Сообщения: 46
Зарегистрирован: Вт дек 02, 2008 15:25:53
Контактная информация:

Сообщение jovanny »

Старый Бабай писал(а):Какая плисина?
И в чем пишешь?
Verilog или VHDL?

ЕРМ3128АТС100-10,язык Verilog
jovanny
Открыл глаза
Сообщения: 46
Зарегистрирован: Вт дек 02, 2008 15:25:53
Контактная информация:

Сообщение jovanny »

Спасибо!
Старый Бабай
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Ср окт 29, 2008 12:23:21

Сообщение Старый Бабай »

Не за что.
Встречный вопрос - SPI на veriloge не делал?
igor_tgru
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Пн окт 27, 2008 22:11:28

Сообщение igor_tgru »

Старый Бабай писал(а):Не за что.
Встречный вопрос - SPI на veriloge не делал?

гммм может я чегото несовсем понял , но он вроде вырождается в 2а сдвиговых регистра с разрешением сдвига
Старый Бабай
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Ср окт 29, 2008 12:23:21

Сообщение Старый Бабай »

igor_tgru писал(а):гммм может я чегото несовсем понял , но он вроде вырождается в 2а сдвиговых регистра с разрешением сдвига

Это то все понятно
но на практике не очень то получается
jovanny
Открыл глаза
Сообщения: 46
Зарегистрирован: Вт дек 02, 2008 15:25:53
Контактная информация:

Сообщение jovanny »

Старый Бабай писал(а):Не за что.
Встречный вопрос - SPI на veriloge не делал?

к сожалению нет.
igor_tgru
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Пн окт 27, 2008 22:11:28

Сообщение igor_tgru »

Старый Бабай писал(а):
igor_tgru писал(а):гммм может я чегото несовсем понял , но он вроде вырождается в 2а сдвиговых регистра с разрешением сдвига

Это то все понятно
но на практике не очень то получается

Ну дык что конкретно неполучаеся ? в чем именно затык ?
jovanny
Открыл глаза
Сообщения: 46
Зарегистрирован: Вт дек 02, 2008 15:25:53
Контактная информация:

Сообщение jovanny »

Старый Бабай писал(а):

Код: Выделить всё


  1 //=======
  2 // Function : Synchronous read write RAM
  3 // Coder    : Deepak Kumar Tala
  4 // Date     : 1-Nov-2005
  5 //=======
  6 module ram_sp_sr_sw #(parameter DATA_WIDTH = 8,
  7                   parameter ADDR_WIDTH = 8,
  8                   parameter RAM_DEPTH = (1 << ADDR_WIDTH))(
  9 input  wire                  clk      , // Clock Input
 10 input  wire [ADDR_WIDTH-1:0] address  , // Address Input
 11 inout  wire [DATA_WIDTH-1:0] data     , // Data bi-directional
 12 input  wire                  cs       , // Chip Select
 13 input  wire                  we       , // Write Enable/Read Enable
 14 input  wire                  oe         // Output Enable
 15 );
 16 //---------- variables----------------
 17 reg [DATA_WIDTH-1:0]   data_out ;
 18 // Use Associative array to save memory footprint
 19 typedef reg [ADDR_WIDTH-1:0] mem_addr;
 20 reg [DATA_WIDTH-1:0] mem [mem_addr];
 21
 22 //---------- Starts Here------------------
 23 // Tri-State Buffer control
 24 // output : When we = 0, oe = 1, cs = 1
 25 assign data = (cs && oe &&  ! we) ? data_out : 8'bz;
 26
 27 // Memory Write Block
 28 // Write Operation : When we = 1, cs = 1
 29 always @ (posedge clk)
 30 begin : MEM_WRITE
 31    if ( cs && we ) begin
 32        mem[address] = data;
 33    end
 34 end
 35
 36 // Memory Read Block
 37 // Read Operation : When we = 0, oe = 1, cs = 1
 38 always @ (posedge clk)
 39 begin : MEM_READ
 40     if (cs &&  ! we && oe) begin
 41          data_out = mem[address];
 42     end
 43 end
 44
 45 endmodule // End of Module ram_sp_sr_sw



Извините за поздно "сгенерированный" вопрос,но все-таки.. :) В этом коде я как понимаю описана модель памяти,а не контроллер памяти,как я понимаю-контроллер памяти должен управлять памятью-то есть мы говорим ему запиши данные,он начинает выставлять сигналы CS,RD(WR) и т.д.,то есть если используем ПЛИС как контроллер памяти,то сигналы CS,WR,OE должны быть выходными,поправьте меня если я ошибаюсь,но мне именно это нужно.Заранее спасибо.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»