M5: Praktikumsunterlagen
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,15 @@
|
||||
Diese Dateien zeigen Ihnen Schritt für Schritt eine mögliche Lösung.
|
||||
In den aufeinanderfolgenden Stufen ist jeweils ein Stück mehr einer möglichen Lösung enthalten.
|
||||
Versuchen Sie, der Versuchung zu widerstehen, den Code einfach zu kopieren.
|
||||
In jedem Fall gilt: Sie sollten verstehen, was Sie tun.
|
||||
|
||||
Zum Entpacken bitte 7-zip nutzen (Windows kommt mit passwortgeschützten 7z-Dateien nicht zurecht)
|
||||
|
||||
Der Zugriff auf Stufe 3 und 4 ist bewusst etwas erschwert.
|
||||
Sie benötigen die folgenden Passwörter zum dekodieren der komprimierten Dateien:
|
||||
|
||||
Stufe 1: (kein Passwort)
|
||||
Stufe 2: (kein Passwort)
|
||||
Stufe 3: "ES123"
|
||||
Stufe 4: "DasBekommeIchAuchAlleineHin"
|
||||
Stufe 5: --> auf Anfrage bei Ihrem Betreuer
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,134 @@
|
||||
//
|
||||
// gip.h
|
||||
// Type definitions for AXI, AXIS and AXIL IP
|
||||
// Prof. Dr.-Ing. W. Gehrke 2020+
|
||||
//
|
||||
// Last Update: 01.08.23
|
||||
|
||||
#ifndef __GIP_H__
|
||||
#define __GIP_H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
volatile uint32_t InterruptEnable; // [1] MM2VS INT Enable, [0] VS2MM INT Enable
|
||||
volatile uint32_t InterruptStatus; // [1] MM2VS INT Status, [0] VS2MM INT Status
|
||||
|
||||
volatile uint32_t MM2VS_Control; // [0] 1=run, [1] sync w SOF, [7:4] add. frame buffers, [9] 1=freeze, [15:12] AxCACHE
|
||||
volatile uint32_t MM2VS_StartAddress; // [31:0] Buffer Start Address
|
||||
volatile uint32_t MM2VS_HorizontalBytes; // [15:0] Number of Bytes per Line
|
||||
volatile uint32_t MM2VS_Stride; // [23:0] Stride [Bytes]
|
||||
volatile uint32_t MM2VS_VerticalLines; // [15:0] Number of Lines
|
||||
volatile uint32_t MM2VS_InterruptLine; // [15:0] Lineoffset for INT generation (0 = bottom line)
|
||||
volatile uint32_t MM2VS_FrameNumber; // [15:0] Current Frame Number (read only)
|
||||
volatile uint32_t MM2VS_LineNumber; // [15:0] Current Line Number (read only)
|
||||
volatile uint32_t MM2VS_LastFrameAddress; // [31:0] Last used Buffer Start Address (read only)
|
||||
|
||||
volatile uint32_t VS2MM_Control; // [0] 1=run, [1] sync w SOF, [7:4] add. frame buffers, [8] no flushing when inactive, [9] 1=freeze, [15:12] AxCACHE
|
||||
volatile uint32_t VS2MM_StartAddress; // [31:0] Buffer Start Address
|
||||
volatile uint32_t VS2MM_HorizontalBytes; // [15:0] Number of Bytes per Line
|
||||
volatile uint32_t VS2MM_Stride; // [23:0] Stride [Bytes]
|
||||
volatile uint32_t VS2MM_VerticalLines; // [15:0] Number of Lines
|
||||
volatile uint32_t VS2MM_InterruptLine; // [15:0] Lineoffset for INT generation (0 = bottom line)
|
||||
volatile uint32_t VS2MM_FrameNumber; // [15:0] Current Frame Number (read only)
|
||||
volatile uint32_t VS2MM_LineNumber; // [15:0] Current Line Number (read only)
|
||||
volatile uint32_t VS2MM_LastFrameAddress; // [31:0] Last used Buffer Start Address (read only)
|
||||
} GIP_AXI_2D_MM2VS;
|
||||
|
||||
typedef GIP_AXI_2D_MM2VS *PGIP_AXI_2D_MM2VS;
|
||||
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
volatile uint32_t Gpo; // GP Outputs
|
||||
volatile uint32_t Gpi; // GP Inputs (read only)
|
||||
} GIP_AXIL_GPIO;
|
||||
|
||||
typedef GIP_AXIL_GPIO *PGIP_AXIL_GPIO;
|
||||
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
volatile uint32_t Max; // Counter Max Value
|
||||
} GIP_AXIL_MODULO_COUNTER;
|
||||
|
||||
typedef GIP_AXIL_MODULO_COUNTER *PGIP_AXIL_MODULO_COUNTER;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
volatile uint32_t Crop_X; // Crop Hor Start
|
||||
volatile uint32_t Crop_Y; // Crop Ver Start
|
||||
volatile uint32_t Crop_W; // Crop Width
|
||||
volatile uint32_t Crop_H; // Crop Height
|
||||
} GIP_AXIL_CROP_FIXED;
|
||||
|
||||
typedef GIP_AXIL_CROP_FIXED *PGIP_AXIL_CROP_FIXED;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
volatile uint32_t Status_and_Reset; // Write Access: [0] 1=Reset
|
||||
// Read Access : [0] Reset, [1] RD_empty, [2] WR_full, [3] always 0, [FIFO_AWIDTH+3:4] RD_num , [FIFO_AWIDTH*2+3:FIFO_AWIDTH+4] WR_num
|
||||
// if FIFO_AWIDTH > 14: only 14 LSBs of RD_num and WR_num are reported
|
||||
} GIP_AXIS_FIFO;
|
||||
|
||||
typedef GIP_AXIS_FIFO *PGIP_AXIS_FIFO;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
volatile uint32_t Control; // [0] 1=Streaming enable, [1] 1= Output Stream always valid
|
||||
volatile uint32_t FrameCounter; // (read only)
|
||||
volatile uint32_t NoiseMeasurement; // (read only)
|
||||
volatile uint32_t BytesPerLine; // (read only)
|
||||
volatile uint32_t BytesPerFrame; // (read only)
|
||||
volatile uint32_t ClockCyclesPerFrame; // (read only)
|
||||
} GIP_AXIS_FRAME_STATISTICS;
|
||||
|
||||
typedef GIP_AXIS_FRAME_STATISTICS *PGIP_AXIS_FRAME_STATISTICS;
|
||||
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
volatile uint32_t Channel; // [2:0] selected Input Channel
|
||||
} GIP_AXIS_MUX;
|
||||
|
||||
typedef GIP_AXIS_MUX *PGIP_AXIS_MUX;
|
||||
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
volatile uint32_t weight1; // [7:0] weight stream 1
|
||||
volatile uint32_t weight2; // [7:0] weight stream 2
|
||||
volatile uint32_t div; // [7:0] divider = 2^div (div = 0..9)
|
||||
} GIP_AXIS_MIXER;
|
||||
|
||||
typedef GIP_AXIS_MIXER *PGIP_AXIS_MIXER;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
volatile uint32_t InterruptEnable; // [0] 1=Frame Interrupt Enable
|
||||
volatile uint32_t InterruptStatus; // [0] Frame Interrupt Status (!! write 0 to clear pending Interrupt !!)
|
||||
volatile uint32_t Board_IO; // [7:0] LEDs, [15:8] Switches, [23:16] Buttons, [29:24] RGB-LEDs
|
||||
volatile uint32_t CycleCounter; // [32:0] CycleCounter[31:0] (AXIL_CLK) (read only)
|
||||
volatile uint32_t MM2VS_FramebaseAddress; // [31:0] Frame Base Address
|
||||
volatile uint32_t CycleCounterHigh; // [32:0] CycleCounter[63:32] (AXIL_CLK) (read only)
|
||||
volatile uint32_t HW_Version; // [31:0] HW_Version (same as Generic) (read only)
|
||||
volatile uint32_t MM2VS_Hor_Bytes; // [15:0] Horizontal Number of Bytes
|
||||
volatile uint32_t MM2VS_Ver_Lines; // [15:0] Vertical Number of Lines
|
||||
volatile uint32_t MM2VS_Stride; // [23:0] Stride
|
||||
volatile uint32_t MM2VS_Control; // [0] 1=run
|
||||
volatile uint32_t Video_Mode; // [0] 1=Monochrom Mode, 0=RGB Mode (Data[23:16]=Red, Data[15:8]=Green, Data[15:8]=Blue)
|
||||
} GIP_ZYNQ_BASE;
|
||||
|
||||
typedef GIP_ZYNQ_BASE *PGIP_ZYNQ_BASE;
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,9 @@
|
||||
set_property -dict { PACKAGE_PIN N18 IOSTANDARD LVCMOS33 PULLUP true} [get_ports i2c_scl_io];
|
||||
set_property -dict { PACKAGE_PIN N17 IOSTANDARD LVCMOS33 PULLUP true} [get_ports i2c_sda_io];
|
||||
set_property -dict { PACKAGE_PIN R19 IOSTANDARD LVCMOS33 } [get_ports bclk];
|
||||
set_property -dict { PACKAGE_PIN R18 IOSTANDARD LVCMOS33 } [get_ports pb_dat];
|
||||
set_property -dict { PACKAGE_PIN T19 IOSTANDARD LVCMOS33 } [get_ports pb_lrc];
|
||||
# set_property -dict { PACKAGE_PIN R16 IOSTANDARD LVCMOS33 } [get_ports rec_dat];
|
||||
# set_property -dict { PACKAGE_PIN Y18 IOSTANDARD LVCMOS33 } [get_ports rec_lrc];
|
||||
set_property -dict { PACKAGE_PIN P18 IOSTANDARD LVCMOS33 } [get_ports mute];
|
||||
set_property -dict { PACKAGE_PIN R17 IOSTANDARD LVCMOS33 } [get_ports mclk];
|
||||
Reference in New Issue
Block a user