Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'SRAM FPGA'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - DIY
    • Projekty - DIY roboty
    • Projekty - DIY (mini)
    • Projekty - DIY (początkujący)
    • Projekty - DIY w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie

Kategorie

  • Quizy o elektronice
  • Quizy do kursu elektroniki I
  • Quizy do kursu elektroniki II
  • Quizy do kursów Arduino
  • Quizy do kursu STM32L4
  • Quizy do pozostałych kursów

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Imię


Strona

Znaleziono 1 wynik

  1. Cześć, posiadam zestaw developerski FPGA firmy Digilent "Cmod-A7" (Xilinx Artix-7) - tutaj kilka linków z nim związanych: https://digilent.com/reference/programmable-logic/cmod-a7/start?redirect=2 https://digilent.com/reference/programmable-logic/cmod-a7/reference-manual Jest on oparty na dość dużym układzie FPGA Xilinx'a z rodziny Artix-7 (20K LUT) i ma "na pokładzie" statyczną pamięć SRAM o pojemności 512 KB. Ta pamięć to IC IS61WV5128BLL-10BLI - tutaj linki do dokumentacji: https://www.mouser.pl/ProductDetail/ISSI/IS61WV5128BLL-10BLI?qs=aNmNlDCMS%2Bo6d%2BeqQETuNQ%3D%3D https://www.mouser.pl/datasheet/2/198/61-64WV5128Axx-Bxx-258353.pdf Ta pamięć ma organizację 512K x 8-em bitów, czas dostępu 10 ns i stosunkowo proste sterowanie. Prosty kontroler dla tej pamięci jest opisany w tych artykułach: https://www.hackster.io/salvador-canas/a-practical-introduction-to-sram-memories-using-an-fpga-i-3f3992?f=1 https://www.hackster.io/salvador-canas/a-practical-introduction-to-sram-memories-using-an-fpga-ii-a18801 A tutaj w Github'ie jest kod projektu dla tych artykułów: https://github.com/salcanmor/SRAM-tester-for-Cmod-A7-35T/tree/master/basic controller Chciałem sprawdzić jak działa ten kontroler SRAM dla płytki Cmod-A7 (wersja z A7-35T). Pobrałem kod projektu dla Xilinx Vivado. Projekt składa się z kilku modułów: 1) top.v - główny moduł projektu (w nim są zawarte instancje pozostałych modułów 2) checker.v - główna maszyna stanowa (FSM) obsługująca logikę projektu (steruje ona UART-em do komunikacji z płytką) 3) sram-ctrl2.v - bardzo prosty moduł kontrolera fizycznej pamięci SRAM 4) debouncer.v - usuwa zakłócenia dla push-Button'a Reset 5) moduły do implementacji UART'a Płytka FPGA Cmod-A7 ma sprzętowy USB2JTAG i USB2Serial (USB2UART) i własnie przez wirtualny serial port jest zrobione sterowanie projektem. Tutaj kod głownego modułu projektu "top.v" : `timescale 1ns / 1ps module top ( input wire clk, input wire reset, input wire data_in, output wire data_out, // to/from SRAM output wire [18:0] ad, inout wire [7:0] dio_a, output wire we_n, output wire oe_n, output wire ce_a_n ); wire [7:0] r_data_bus; wire [7:0] w_data_bus; wire [7:0] data_f2s_bus; wire [7:0] data_s2f_r_bus; wire [18:0] addr_bus; wire button_wire; debouncer debouncer_unit ( .clk(clk), .PB(reset), .PB_state(), .PB_down(), .PB_up(button_wire) ); uart uart_unit ( .clk(clk), .reset(button_wire), .data_in(data_in), .tx_start(tx_start), .w_data(w_data_bus), .data_out(data_out), .rx_done_tick(rx_done_tick), .tx_done_tick(tx_done_tick), .r_data(r_data_bus), .tx_ready(tx_ready) ); // Instantiate the module checker checker_unit ( .clk(clk), .reset(button_wire), .rx_done_tick(rx_done_tick), .tx_ready(tx_ready), .r_data(r_data_bus), .w_data(w_data_bus), .tx_start(tx_start), .mem(mem), .rw(rw), .addr(addr_bus), .data_s2f_r(data_s2f_r_bus), .data_f2s(data_f2s_bus) ); sram_ctrl2 instance_name ( .clk(clk), .reset(reset), // .mem(mem), .rw(rw), .addr(addr_bus), .data_f2s(data_f2s_bus), // .ready(ready), .data_s2f_r(data_s2f_r_bus), // .data_s2f_ur(data_s2f_ur), .ad(ad), .we_n(we_n), .oe_n(oe_n), .dio_a(dio_a), .ce_a_n(ce_a_n) ); endmodule , a tutaj kod kontrolera pamięci SRAM "sram-ctrl2.v": `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 10.10.2018 01:07:38 // Design Name: // Module Name: sram_ctrl2 // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// module sram_ctrl2( input wire clk, // Clock signal input wire reset, // Reset signal input wire rw, // With this signal, we select reading or writing operation input wire [18:0] addr, // Address bus input wire [7:0] data_f2s, // Data to be writteb in the SRAM output reg [7:0] data_s2f_r, // It is the 8-bit registered data retrieved from the SRAM (the -s2f suffix stands for SRAM to FPGA) output wire [18:0] ad, // Address bus output wire we_n, // Write enable (active-low) output wire oe_n, // Output enable (active-low) inout wire [7:0] dio_a, // Data bus output wire ce_a_n // Chip enable (active-low). Disables or enables the chip. ); assign ce_a_n = 1'b0; assign oe_n = 1'b0; assign we_n = rw; assign ad = addr; assign dio_a = (rw == 1'b1)? 8'hZZ : data_f2s; always @(posedge clk) begin if (rw == 1'b1) data_s2f_r <= dio_a; end endmodule Jak widać kod tego sterownika jest bardzo prosty. Plik "user constraint file" projektu "CmodA7_Master.xdc" zawiera opisy pinów I/O dla płytki Cmod-A7. Gdy dokonałem sysntezy projektu i wczytałem plik konfiguracyjny do płytki FPGA i podłączyłem się za pomocą programu "Putty" do wirtualnego portu serial płytki zobaczyłem tylko szybko zmieniającą się zawartość okna i nadpisywane komunikaty. Podejrzewam, że projekt był pisany i uruchamiany dla OS Linux, bo sterowanie końców lini miało tylko na końcu znak CR (Carriage return) bez LF (line feed). Poprawiłem to w pliku "checker.v" (komunikaty UART) i udało mi się poprawnie zaprogramować pamięć SRAM. Tutaj zrzut ekranu z okna "Putty": a poniżej zdjęcie zestawu FPGA: W teście SRAM zapisywałem wartość (bitowo) "10101010" do adresu "1000000000000000001" i potem dokonując odczytu z tego adresu otrzymałem tą samą wartość zwróconą. Po małych przeróbkach kod tego sterownika SRAM powinno się udać przerobić tak aby obsługiwał większe kostki pamięci SRAM np. takie: https://www.mouser.pl/ProductDetail/ISSI/IS62WV102416DBLL-55TLI?qs=abmNkq9no6C1SHCuIdZ89g%3D%3D lub takie: https://www.mouser.pl/ProductDetail/ISSI/IS61WV204816BLL-10TLI?qs=cttFivMKqWz%2BDMMKFLCg1w%3D%3D Na tej ostatniej kostce można zrobić już bufor pamięci obrazu dla rozdzielczośći HD ((1,920 x 1,080 pixels ). BTW: w archiwum zip poprawiony kod projektu dla Xilinx Vivado. SRAM_512x8_CmodA7_Ctrl01.zip Pozdrawiam
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.