diff --git a/rtl/ossc.v b/rtl/ossc.v
index d7af51d..e7bc936 100644
--- a/rtl/ossc.v
+++ b/rtl/ossc.v
@@ -149,18 +149,18 @@ assign cpu_reset_n = reset_n_reg;
sys sys_inst(
.clk_clk (clk27),
.reset_reset_n (cpu_reset_n),
+ .i2c_opencores_0_export_scl_pad_io (scl),
+ .i2c_opencores_0_export_sda_pad_io (sda),
+ .spi_0_external_MISO (SD_DAT[0]),
+ .spi_0_external_MOSI (SD_CMD),
+ .spi_0_external_SCLK (SD_CLK),
+ .spi_0_external_SS_n (SD_DAT[3]),
.pio_0_sys_ctrl_out_export (sys_ctrl),
.pio_1_controls_in_export ({ir_code_cnt, 5'b00000, HDMI_TX_MODE, btn, ir_code}),
.pio_2_horizontal_info_out_export (h_info),
.pio_3_vertical_info_out_export (v_info),
.pio_4_linecount_in_export ({VSYNC_out, 13'h0000, fpga_vsyncgen, 5'h00, lines_out}),
- .pio_5_lcd_ctrl_out_export (lcd_ctrl),
- .i2c_opencores_0_export_scl_pad_io (scl),
- .i2c_opencores_0_export_sda_pad_io (sda),
- .sdcard_0_b_SD_cmd (SD_CMD),
- .sdcard_0_b_SD_dat (SD_DAT[0]),
- .sdcard_0_b_SD_dat3 (SD_DAT[3]),
- .sdcard_0_o_SD_clock (SD_CLK)
+ .pio_5_lcd_ctrl_out_export (lcd_ctrl)
);
scanconverter scanconverter_inst (
diff --git a/software/ossc_sw.project b/software/ossc_sw.project
index f6db809..642e6a5 100644
--- a/software/ossc_sw.project
+++ b/software/ossc_sw.project
@@ -79,6 +79,13 @@
+
+
+
+
+
+
+
diff --git a/software/sys_controller/it6613/it6613_drv.h b/software/sys_controller/it6613/it6613_drv.h
index f2062f9..e2077be 100644
--- a/software/sys_controller/it6613/it6613_drv.h
+++ b/software/sys_controller/it6613/it6613_drv.h
@@ -507,7 +507,7 @@
#define B_AUDFMT_MSB_SHIFT_FIRST (0<<4)
#define B_AUDFMT_LSB_SHIFT_FIRST (1<<4)
#define B_AUDFMT_RISE_EDGE_SAMPLE_WS (0<<5)
- #define B_AUDFMT_FALL_EDGE_SAMPLE_WS (0<<5)
+ #define B_AUDFMT_FALL_EDGE_SAMPLE_WS (1<<5)
#define REG_TX_AUDIO_FIFOMAP 0xE2
#define O_FIFO3SEL 6
diff --git a/software/sys_controller/memory/sdcard.c b/software/sys_controller/memory/sdcard.c
index 63f1f4a..c998b64 100644
--- a/software/sys_controller/memory/sdcard.c
+++ b/software/sys_controller/memory/sdcard.c
@@ -28,7 +28,7 @@ alt_up_sd_card_dev *sdcard_dev;
int read_sd_block(alt_u32 offset, alt_u32 size, alt_u8 *dstbuf)
{
- int i;
+ /*int i;
alt_u32 tmp;
if ((offset % SD_BUFFER_SIZE) || (size > 512)) {
@@ -48,13 +48,13 @@ int read_sd_block(alt_u32 offset, alt_u32 size, alt_u8 *dstbuf)
tmp = IORD_32DIRECT(sdcard_dev->base, i);
*((alt_u32*)(dstbuf+i)) = tmp;
}
-
+*/
return 0;
}
int check_sdcard(alt_u8 *databuf)
{
- sdcard_dev = alt_up_sd_card_open_dev(ALTERA_UP_SD_CARD_AVALON_INTERFACE_0_NAME);
+ /* sdcard_dev = alt_up_sd_card_open_dev(ALTERA_UP_SD_CARD_AVALON_INTERFACE_0_NAME);
if ((sdcard_dev == NULL) || !alt_up_sd_card_is_Present()) {
sniprintf(menu_row1, LCD_ROW_LEN+1, "No SD card det.");
@@ -62,5 +62,6 @@ int check_sdcard(alt_u8 *databuf)
return 1;
}
- return read_sd_block(0, 512, databuf);
+ return read_sd_block(0, 512, databuf);*/
+ return 0;
}
diff --git a/software/sys_controller/ossc/firmware.h b/software/sys_controller/ossc/firmware.h
index 6d0319b..dbe9a2f 100644
--- a/software/sys_controller/ossc/firmware.h
+++ b/software/sys_controller/ossc/firmware.h
@@ -23,7 +23,7 @@
#include "alt_types.h"
#define FW_VER_MAJOR 0
-#define FW_VER_MINOR 73
+#define FW_VER_MINOR 74
#define FW_UPDATE_RETRIES 3
diff --git a/software/sys_controller/ulibSD/integer.h b/software/sys_controller/ulibSD/integer.h
new file mode 100644
index 0000000..29a1f0e
--- /dev/null
+++ b/software/sys_controller/ulibSD/integer.h
@@ -0,0 +1,78 @@
+/*
+ * File: integer.h
+ * Author: Nelson Lombardo
+ * Year: 2015
+ * e-mail: nelson.lombardo@gmail.com
+ * License at the end of file.
+ */
+
+/*****************************************************************************/
+/* Integer type definitions */
+/*****************************************************************************/
+#ifndef _INTEGER_H_
+#define _INTEGER_H_
+
+#include
+
+/* 16-bit, 32-bit or larger integer */
+typedef int16_t INT;
+typedef uint16_t UINT;
+
+/* 8-bit integer */
+typedef int8_t CHAR;
+typedef uint8_t UCHAR;
+typedef uint8_t BYTE;
+typedef uint8_t BOOL;
+
+/* 16-bit integer */
+typedef int16_t SHORT;
+typedef uint16_t USHORT;
+typedef uint16_t WORD;
+typedef uint16_t WCHAR;
+
+/* 32-bit integer */
+typedef int32_t LONG;
+typedef uint32_t ULONG;
+typedef uint32_t DWORD;
+
+/* Boolean type */
+typedef enum { FALSE = 0, TRUE } BOOLEAN;
+typedef enum { LOW = 0, HIGH } THROTTLE;
+
+#endif
+
+// «integer.h» is part of:
+/*----------------------------------------------------------------------------/
+/ ulibSD - Library for SD cards semantics (C)Nelson Lombardo, 2015
+/-----------------------------------------------------------------------------/
+/ ulibSD library is a free software that opened under license policy of
+/ following conditions.
+/
+/ Copyright (C) 2015, ChaN, all right reserved.
+/
+/ 1. Redistributions of source code must retain the above copyright notice,
+/ this condition and the following disclaimer.
+/
+/ This software is provided by the copyright holder and contributors "AS IS"
+/ and any warranties related to this software are DISCLAIMED.
+/ The copyright owner or contributors be NOT LIABLE for any damages caused
+/ by use of this software.
+/----------------------------------------------------------------------------*/
+
+// Derived from Mister Chan works on FatFs code (http://elm-chan.org/fsw/ff/00index_e.html):
+/*----------------------------------------------------------------------------/
+/ FatFs - FAT file system module R0.11 (C)ChaN, 2015
+/-----------------------------------------------------------------------------/
+/ FatFs module is a free software that opened under license policy of
+/ following conditions.
+/
+/ Copyright (C) 2015, ChaN, all right reserved.
+/
+/ 1. Redistributions of source code must retain the above copyright notice,
+/ this condition and the following disclaimer.
+/
+/ This software is provided by the copyright holder and contributors "AS IS"
+/ and any warranties related to this software are DISCLAIMED.
+/ The copyright owner or contributors be NOT LIABLE for any damages caused
+/ by use of this software.
+/----------------------------------------------------------------------------*/
diff --git a/software/sys_controller/ulibSD/sd_io.c b/software/sys_controller/ulibSD/sd_io.c
new file mode 100644
index 0000000..aab56c1
--- /dev/null
+++ b/software/sys_controller/ulibSD/sd_io.c
@@ -0,0 +1,482 @@
+/*
+ * File: sd_io.c
+ * Author: Nelson Lombardo
+ * Year: 2015
+ * e-mail: nelson.lombardo@gmail.com
+ * License at the end of file.
+ */
+
+#include "sd_io.h"
+
+#ifdef _M_IX86 // For use over x86
+/*****************************************************************************/
+/* Private Methods Prototypes - Direct work with PC file */
+/*****************************************************************************/
+
+/**
+ * \brief Get the total numbers of sectors in SD card.
+ * \param dev Device descriptor.
+ * \return Quantity of sectors. Zero if fail.
+ */
+DWORD __SD_Sectors (SD_DEV* dev);
+
+/*****************************************************************************/
+/* Private Methods - Direct work with PC file */
+/*****************************************************************************/
+
+DWORD __SD_Sectors (SD_DEV *dev)
+{
+ if (dev->fp == NULL) return(0); // Fail
+ else {
+ fseek(dev->fp, 0L, SEEK_END);
+ return (((DWORD)(ftell(dev->fp)))/((DWORD)512)-1);
+ }
+}
+#else // For use with uControllers
+/******************************************************************************
+ Private Methods Prototypes - Direct work with SD card
+******************************************************************************/
+
+/**
+ \brief Simple function to calculate power of two.
+ \param e Exponent.
+ \return Math function result.
+*/
+DWORD __SD_Power_Of_Two(BYTE e);
+
+/**
+ \brief Assert the SD card (SPI CS low).
+ */
+inline void __SD_Assert (void);
+
+/**
+ \brief Deassert the SD (SPI CS high).
+ */
+inline void __SD_Deassert (void);
+
+/**
+ \brief Change to max the speed transfer.
+ \param throttle
+ */
+void __SD_Speed_Transfer (BYTE throttle);
+
+/**
+ \brief Send SPI commands.
+ \param cmd Command to send.
+ \param arg Argument to send.
+ \return R1 response.
+ */
+BYTE __SD_Send_Cmd(BYTE cmd, DWORD arg);
+
+/**
+ \brief Write a data block on SD card.
+ \param dat Storage the data to transfer.
+ \param token Inidicates the type of transfer (single or multiple).
+ */
+SDRESULTS __SD_Write_Block(SD_DEV *dev, void *dat, BYTE token);
+
+/**
+ \brief Get the total numbers of sectors in SD card.
+ \param dev Device descriptor.
+ \return Quantity of sectors. Zero if fail.
+ */
+DWORD __SD_Sectors (SD_DEV *dev);
+
+/******************************************************************************
+ Private Methods - Direct work with SD card
+******************************************************************************/
+
+DWORD __SD_Power_Of_Two(BYTE e)
+{
+ DWORD partial = 1;
+ BYTE idx;
+ for(idx=0; idx!=e; idx++) partial *= 2;
+ return(partial);
+}
+
+inline void __SD_Assert(void){
+ SPI_CS_Low();
+}
+
+inline void __SD_Deassert(void){
+ SPI_CS_High();
+}
+
+void __SD_Speed_Transfer(BYTE throttle) {
+ if(throttle == HIGH) SPI_Freq_High();
+ else SPI_Freq_Low();
+}
+
+BYTE __SD_Send_Cmd(BYTE cmd, DWORD arg)
+{
+ BYTE crc, res;
+ // ACMD«n» is the command sequense of CMD55-CMD«n»
+ if(cmd & 0x80) {
+ cmd &= 0x7F;
+ res = __SD_Send_Cmd(CMD55, 0);
+ if (res > 1) return (res);
+ }
+
+ // Select the card
+ __SD_Deassert();
+ SPI_RW(0xFF);
+ __SD_Assert();
+ SPI_RW(0xFF);
+
+ // Send complete command set
+ SPI_RW(cmd); // Start and command index
+ SPI_RW((BYTE)(arg >> 24)); // Arg[31-24]
+ SPI_RW((BYTE)(arg >> 16)); // Arg[23-16]
+ SPI_RW((BYTE)(arg >> 8 )); // Arg[15-08]
+ SPI_RW((BYTE)(arg >> 0 )); // Arg[07-00]
+
+ // CRC?
+ crc = 0x01; // Dummy CRC and stop
+ if(cmd == CMD0) crc = 0x95; // Valid CRC for CMD0(0)
+ if(cmd == CMD8) crc = 0x87; // Valid CRC for CMD8(0x1AA)
+ SPI_RW(crc);
+
+ // Receive command response
+ // Wait for a valid response in timeout of 5 milliseconds
+ SPI_Timer_On(5);
+ do {
+ res = SPI_RW(0xFF);
+ } while((res & 0x80)&&(SPI_Timer_Status()==TRUE));
+ SPI_Timer_Off();
+ // Return with the response value
+ return(res);
+}
+
+SDRESULTS __SD_Write_Block(SD_DEV *dev, void *dat, BYTE token)
+{
+ WORD idx;
+ BYTE line;
+ // Send token (single or multiple)
+ SPI_RW(token);
+ // Single block write?
+ if(token != 0xFD)
+ {
+ // Send block data
+ for(idx=0; idx!=SD_BLK_SIZE; idx++) SPI_RW(*((BYTE*)dat + idx));
+ /* Dummy CRC */
+ SPI_RW(0xFF);
+ SPI_RW(0xFF);
+ // If not accepted, returns the reject error
+ if((SPI_RW(0xFF) & 0x1F) != 0x05) return(SD_REJECT);
+ }
+#ifdef SD_IO_WRITE_WAIT_BLOCKER
+ // Waits until finish of data programming (blocked)
+ while(SPI_RW(0xFF)==0);
+ return(SD_OK);
+#else
+ // Waits until finish of data programming with a timeout
+ SPI_Timer_On(SD_IO_WRITE_TIMEOUT_WAIT);
+ do {
+ line = SPI_RW(0xFF);
+ } while((line==0)&&(SPI_Timer_Status()==TRUE));
+ SPI_Timer_Off();
+#ifdef SD_IO_DBG_COUNT
+ dev->debug.write++;
+#endif
+ if(line==0) return(SD_BUSY);
+ else return(SD_OK);
+#endif
+}
+
+DWORD __SD_Sectors (SD_DEV *dev)
+{
+ BYTE csd[16];
+ BYTE idx;
+ DWORD ss = 0;
+ WORD C_SIZE = 0;
+ BYTE C_SIZE_MULT = 0;
+ BYTE READ_BL_LEN = 0;
+ if(__SD_Send_Cmd(CMD9, 0)==0)
+ {
+ // Wait for response
+ while (SPI_RW(0xFF) == 0xFF);
+ for (idx=0; idx!=16; idx++) csd[idx] = SPI_RW(0xFF);
+ // Dummy CRC
+ SPI_RW(0xFF);
+ SPI_RW(0xFF);
+ SPI_Release();
+ if(dev->cardtype & SDCT_SD1)
+ {
+ ss = csd[0];
+ // READ_BL_LEN[83:80]: max. read data block length
+ READ_BL_LEN = (csd[5] & 0x0F);
+ // C_SIZE [73:62]
+ C_SIZE = (csd[6] & 0x03);
+ C_SIZE <<= 8;
+ C_SIZE |= (csd[7]);
+ C_SIZE <<= 2;
+ C_SIZE |= ((csd[8] >> 6) & 0x03);
+ // C_SIZE_MULT [49:47]
+ C_SIZE_MULT = (csd[9] & 0x03);
+ C_SIZE_MULT <<= 1;
+ C_SIZE_MULT |= ((csd[10] >> 7) & 0x01);
+ }
+ else if(dev->cardtype & SDCT_SD2)
+ {
+ // C_SIZE [69:48]
+ C_SIZE = (csd[7] & 0x3F);
+ C_SIZE <<= 8;
+ C_SIZE |= (csd[8] & 0xFF);
+ C_SIZE <<= 8;
+ C_SIZE |= (csd[9] & 0xFF);
+ // C_SIZE_MULT [--]. don't exits
+ C_SIZE_MULT = 0;
+ }
+ ss = (C_SIZE + 1);
+ ss *= __SD_Power_Of_Two(C_SIZE_MULT + 2);
+ ss *= __SD_Power_Of_Two(READ_BL_LEN);
+ ss /= SD_BLK_SIZE;
+ return (ss);
+ } else return (0); // Error
+}
+#endif // Private methods for uC
+
+/******************************************************************************
+ Public Methods - Direct work with SD card
+******************************************************************************/
+
+SDRESULTS SD_Init(SD_DEV *dev)
+{
+#if defined(_M_IX86) // x86
+ dev->fp = fopen(dev->fn, "r+");
+ if (dev->fp == NULL)
+ return (SD_ERROR);
+ else
+ {
+ dev->last_sector = __SD_Sectors(dev);
+#ifdef SD_IO_DBG_COUNT
+ dev->debug.read = 0;
+ dev->debug.write = 0;
+#endif
+ return (SD_OK);
+ }
+#else // uControllers
+ BYTE n, cmd, ct, ocr[4];
+ BYTE idx;
+ BYTE init_trys;
+ ct = 0;
+ for(init_trys=0; ((init_trys!=SD_INIT_TRYS)&&(!ct)); init_trys++)
+ {
+ // Initialize SPI for use with the memory card
+ SPI_Init();
+
+ SPI_CS_High();
+ SPI_Freq_Low();
+
+ // 80 dummy clocks
+ for(idx = 0; idx != 10; idx++) SPI_RW(0xFF);
+
+ SPI_Timer_On(500);
+ while(SPI_Timer_Status()==TRUE);
+ SPI_Timer_Off();
+
+ dev->mount = FALSE;
+ SPI_Timer_On(500);
+ while ((__SD_Send_Cmd(CMD0, 0) != 1)&&(SPI_Timer_Status()==TRUE));
+ SPI_Timer_Off();
+ // Idle state
+ if (__SD_Send_Cmd(CMD0, 0) == 1) {
+ // SD version 2?
+ if (__SD_Send_Cmd(CMD8, 0x1AA) == 1) {
+ // Get trailing return value of R7 resp
+ for (n = 0; n < 4; n++) ocr[n] = SPI_RW(0xFF);
+ // VDD range of 2.7-3.6V is OK?
+ if ((ocr[2] == 0x01)&&(ocr[3] == 0xAA))
+ {
+ // Wait for leaving idle state (ACMD41 with HCS bit)...
+ SPI_Timer_On(1000);
+ while ((SPI_Timer_Status()==TRUE)&&(__SD_Send_Cmd(ACMD41, 1UL << 30)));
+ SPI_Timer_Off();
+ // CCS in the OCR?
+ if ((SPI_Timer_Status()==TRUE)&&(__SD_Send_Cmd(CMD58, 0) == 0))
+ {
+ for (n = 0; n < 4; n++) ocr[n] = SPI_RW(0xFF);
+ // SD version 2?
+ ct = (ocr[0] & 0x40) ? SDCT_SD2 | SDCT_BLOCK : SDCT_SD2;
+ }
+ }
+ } else {
+ // SD version 1 or MMC?
+ if (__SD_Send_Cmd(ACMD41, 0) <= 1)
+ {
+ // SD version 1
+ ct = SDCT_SD1;
+ cmd = ACMD41;
+ } else {
+ // MMC version 3
+ ct = SDCT_MMC;
+ cmd = CMD1;
+ }
+ // Wait for leaving idle state
+ SPI_Timer_On(250);
+ while((SPI_Timer_Status()==TRUE)&&(__SD_Send_Cmd(cmd, 0)));
+ SPI_Timer_Off();
+ if(SPI_Timer_Status()==FALSE) ct = 0;
+ if(__SD_Send_Cmd(CMD59, 0)) ct = 0; // Deactivate CRC check (default)
+ if(__SD_Send_Cmd(CMD16, 512)) ct = 0; // Set R/W block length to 512 bytes
+ }
+ }
+ }
+ if(ct) {
+ dev->cardtype = ct;
+ dev->mount = TRUE;
+ dev->last_sector = __SD_Sectors(dev) - 1;
+#ifdef SD_IO_DBG_COUNT
+ dev->debug.read = 0;
+ dev->debug.write = 0;
+#endif
+ __SD_Speed_Transfer(HIGH); // High speed transfer
+ }
+ SPI_Release();
+ return (ct ? SD_OK : SD_NOINIT);
+#endif
+}
+
+SDRESULTS SD_Read(SD_DEV *dev, void *dat, DWORD sector, WORD ofs, WORD cnt)
+{
+#if defined(_M_IX86) // x86
+ // Check the sector query
+ if((sector > dev->last_sector)||(cnt == 0)) return(SD_PARERR);
+ if(dev->fp!=NULL)
+ {
+ if (fseek(dev->fp, ((512 * sector) + ofs), SEEK_SET)!=0)
+ return(SD_ERROR);
+ else {
+ if(fread(dat, 1, (cnt - ofs),dev->fp)==(cnt - ofs))
+ {
+#ifdef SD_IO_DBG_COUNT
+ dev->debug.read++;
+#endif
+ return(SD_OK);
+ }
+ else return(SD_ERROR);
+ }
+ } else {
+ return(SD_ERROR);
+ }
+#else // uControllers
+ SDRESULTS res;
+ BYTE tkn;
+ WORD remaining;
+ res = SD_ERROR;
+ if ((sector > dev->last_sector)||(cnt == 0)) return(SD_PARERR);
+ // Convert sector number to byte address (sector * SD_BLK_SIZE)
+ if (__SD_Send_Cmd(CMD17, sector * SD_BLK_SIZE) == 0) {
+ SPI_Timer_On(100); // Wait for data packet (timeout of 100ms)
+ do {
+ tkn = SPI_RW(0xFF);
+ } while((tkn==0xFF)&&(SPI_Timer_Status()==TRUE));
+ SPI_Timer_Off();
+ // Token of single block?
+ if(tkn==0xFE) {
+ // Size block (512 bytes) + CRC (2 bytes) - offset - bytes to count
+ remaining = SD_BLK_SIZE + 2 - ofs - cnt;
+ // Skip offset
+ if(ofs) {
+ do {
+ SPI_RW(0xFF);
+ } while(--ofs);
+ }
+ // I receive the data and I write in user's buffer
+ do {
+ *(BYTE*)dat = SPI_RW(0xFF);
+ dat++;
+ } while(--cnt);
+ // Skip remaining
+ do {
+ SPI_RW(0xFF);
+ } while (--remaining);
+ res = SD_OK;
+ }
+ }
+ SPI_Release();
+#ifdef SD_IO_DBG_COUNT
+ dev->debug.read++;
+#endif
+ return(res);
+#endif
+}
+
+#ifdef SD_IO_WRITE
+SDRESULTS SD_Write(SD_DEV *dev, void *dat, DWORD sector)
+{
+#if defined(_M_IX86) // x86
+ // Query ok?
+ if(sector > dev->last_sector) return(SD_PARERR);
+ if(dev->fp != NULL)
+ {
+ if(fseek(dev->fp, SD_BLK_SIZE * sector, SEEK_SET)!=0)
+ return(SD_ERROR);
+ else {
+ if(fwrite(dat, 1, SD_BLK_SIZE, dev->fp)==SD_BLK_SIZE)
+ {
+#ifdef SD_IO_DBG_COUNT
+ dev->debug.write++;
+#endif
+ return(SD_OK);
+ }
+ else return(SD_ERROR);
+ }
+ } else return(SD_ERROR);
+#else // uControllers
+ // Query ok?
+ if(sector > dev->last_sector) return(SD_PARERR);
+ // Single block write (token <- 0xFE)
+ // Convert sector number to bytes address (sector * SD_BLK_SIZE)
+ if(__SD_Send_Cmd(CMD24, sector * SD_BLK_SIZE)==0)
+ return(__SD_Write_Block(dev, dat, 0xFE));
+ else
+ return(SD_ERROR);
+#endif
+}
+#endif
+
+SDRESULTS SD_Status(SD_DEV *dev)
+{
+#if defined(_M_IX86)
+ return((dev->fp == NULL) ? SD_OK : SD_NORESPONSE);
+#else
+ return(__SD_Send_Cmd(CMD0, 0) ? SD_OK : SD_NORESPONSE);
+#endif
+}
+
+// «sd_io.c» is part of:
+/*----------------------------------------------------------------------------/
+/ ulibSD - Library for SD cards semantics (C)Nelson Lombardo, 2015
+/-----------------------------------------------------------------------------/
+/ ulibSD library is a free software that opened under license policy of
+/ following conditions.
+/
+/ Copyright (C) 2015, ChaN, all right reserved.
+/
+/ 1. Redistributions of source code must retain the above copyright notice,
+/ this condition and the following disclaimer.
+/
+/ This software is provided by the copyright holder and contributors "AS IS"
+/ and any warranties related to this software are DISCLAIMED.
+/ The copyright owner or contributors be NOT LIABLE for any damages caused
+/ by use of this software.
+/----------------------------------------------------------------------------*/
+
+// Derived from Mister Chan works on FatFs code (http://elm-chan.org/fsw/ff/00index_e.html):
+/*----------------------------------------------------------------------------/
+/ FatFs - FAT file system module R0.11 (C)ChaN, 2015
+/-----------------------------------------------------------------------------/
+/ FatFs module is a free software that opened under license policy of
+/ following conditions.
+/
+/ Copyright (C) 2015, ChaN, all right reserved.
+/
+/ 1. Redistributions of source code must retain the above copyright notice,
+/ this condition and the following disclaimer.
+/
+/ This software is provided by the copyright holder and contributors "AS IS"
+/ and any warranties related to this software are DISCLAIMED.
+/ The copyright owner or contributors be NOT LIABLE for any damages caused
+/ by use of this software.
+/----------------------------------------------------------------------------*/
diff --git a/software/sys_controller/ulibSD/sd_io.h b/software/sys_controller/ulibSD/sd_io.h
new file mode 100644
index 0000000..3bbb38c
--- /dev/null
+++ b/software/sys_controller/ulibSD/sd_io.h
@@ -0,0 +1,187 @@
+/*
+ * File: sd_io.h
+ * Author: Nelson Lombardo
+ * Year: 2015
+ * e-mail: nelson.lombardo@gmail.com
+ * License at the end of file.
+ */
+
+#ifndef _SD_IO_H_
+#define _SD_IO_H_
+
+/*****************************************************************************/
+/* Configurations */
+/*****************************************************************************/
+//#define _M_IX86 // For use with x86 architecture
+#define SD_IO_WRITE
+//#define SD_IO_WRITE_WAIT_BLOCKER
+#define SD_IO_WRITE_TIMEOUT_WAIT 250
+
+//#define SD_IO_DBG_COUNT
+/*****************************************************************************/
+
+#if defined(_M_IX86)
+
+#include
+#include "integer.h"
+
+/* Results of SD functions */
+typedef enum {
+ SD_OK = 0, /* 0: Function succeeded */
+ SD_NOINIT /* 1: SD not initialized */
+ SD_ERROR, /* 2: Disk error */
+ SD_PARERR, /* 3: Invalid parameter */
+ SD_BUSY, /* 4: Programming busy */
+ SD_REJECT /* 5: Reject data */
+} SDRESULTS;
+
+#ifdef SD_IO_DBG_COUNT
+typedef struct _DBG_COUNT {
+ WORD read;
+ WORD write;
+} DBG_COUNT;
+#endif
+
+/* SD device object */
+typedef struct _SD_DEV {
+ BOOL mount;
+ BYTE cardtype;
+ char fn[20]; /* dd if=/dev/zero of=sim_sd.raw bs=1k count=0 seek=8192 */
+ FILE *fp;
+ DWORD last_sector;
+#ifdef SD_IO_DBG_COUNT
+ DBG_COUNT debug;
+#endif
+} SD_DEV;
+
+#else // For use with uControllers
+
+#include "spi_io.h" /* Provide the low-level functions */
+
+/* Definitions of SD commands */
+#define CMD0 (0x40+0) /* GO_IDLE_STATE */
+#define CMD1 (0x40+1) /* SEND_OP_COND (MMC) */
+#define ACMD41 (0xC0+41) /* SEND_OP_COND (SDC) */
+#define CMD8 (0x40+8) /* SEND_IF_COND */
+#define CMD9 (0x40+9) /* SEND_CSD */
+#define CMD16 (0x40+16) /* SET_BLOCKLEN */
+#define CMD17 (0x40+17) /* READ_SINGLE_BLOCK */
+#define CMD24 (0x40+24) /* WRITE_SINGLE_BLOCK */
+#define CMD42 (0x40+42) /* LOCK_UNLOCK */
+#define CMD55 (0x40+55) /* APP_CMD */
+#define CMD58 (0x40+58) /* READ_OCR */
+#define CMD59 (0x40+59) /* CRC_ON_OFF */
+
+#define SD_INIT_TRYS 0x03
+
+/* CardType) */
+#define SDCT_MMC 0x01 /* MMC version 3 */
+#define SDCT_SD1 0x02 /* SD version 1 */
+#define SDCT_SD2 0x04 /* SD version 2 */
+#define SDCT_SDC (SDCT_SD1|SDCT_SD2) /* SD */
+#define SDCT_BLOCK 0x08 /* Block addressing */
+
+#define SD_BLK_SIZE 512
+
+/* Results of SD functions */
+typedef enum {
+ SD_OK = 0, /* 0: Function succeeded */
+ SD_NOINIT, /* 1: SD not initialized */
+ SD_ERROR, /* 2: Disk error */
+ SD_PARERR, /* 3: Invalid parameter */
+ SD_BUSY, /* 4: Programming busy */
+ SD_REJECT, /* 5: Reject data */
+ SD_NORESPONSE /* 6: No response */
+} SDRESULTS;
+
+#ifdef SD_IO_DBG_COUNT
+typedef struct _DBG_COUNT {
+ WORD read;
+ WORD write;
+} DBG_COUNT;
+#endif
+
+
+/* SD device object */
+typedef struct _SD_DEV {
+ BOOL mount;
+ BYTE cardtype;
+ DWORD last_sector;
+#ifdef SD_IO_DBG_COUNT
+ DBG_COUNT debug;
+#endif
+} SD_DEV;
+
+#endif
+
+/*******************************************************************************
+ * Public Methods - Direct work with SD card *
+ ******************************************************************************/
+
+/**
+ \brief Initialization the SD card.
+ \return If all goes well returns SD_OK.
+ */
+SDRESULTS SD_Init (SD_DEV *dev);
+
+/**
+ \brief Read a single block.
+ \param dest Pointer to the destination object to put data
+ \param sector Start sector number (internally is converted to byte address).
+ \param ofs Byte offset in the sector (0..511).
+ \param cnt Byte count (1..512).
+ \return If all goes well returns SD_OK.
+ */
+SDRESULTS SD_Read (SD_DEV *dev, void *dat, DWORD sector, WORD ofs, WORD cnt);
+
+/**
+ \brief Write a single block.
+ \param dat Data to write.
+ \param sector Sector number to write (internally is converted to byte address).
+ \return If all goes well returns SD_OK.
+ */
+SDRESULTS SD_Write (SD_DEV *dev, void *dat, DWORD sector);
+
+/**
+ \brief Allows know status of SD card.
+ \return If all goes well returns SD_OK.
+*/
+SDRESULTS SD_Status (SD_DEV *dev);
+
+#endif
+
+// «sd_io.h» is part of:
+/*----------------------------------------------------------------------------/
+/ ulibSD - Library for SD cards semantics (C)Nelson Lombardo, 2015
+/-----------------------------------------------------------------------------/
+/ ulibSD library is a free software that opened under license policy of
+/ following conditions.
+/
+/ Copyright (C) 2015, ChaN, all right reserved.
+/
+/ 1. Redistributions of source code must retain the above copyright notice,
+/ this condition and the following disclaimer.
+/
+/ This software is provided by the copyright holder and contributors "AS IS"
+/ and any warranties related to this software are DISCLAIMED.
+/ The copyright owner or contributors be NOT LIABLE for any damages caused
+/ by use of this software.
+/----------------------------------------------------------------------------*/
+
+// Derived from Mister Chan works on FatFs code (http://elm-chan.org/fsw/ff/00index_e.html):
+/*----------------------------------------------------------------------------/
+/ FatFs - FAT file system module R0.11 (C)ChaN, 2015
+/-----------------------------------------------------------------------------/
+/ FatFs module is a free software that opened under license policy of
+/ following conditions.
+/
+/ Copyright (C) 2015, ChaN, all right reserved.
+/
+/ 1. Redistributions of source code must retain the above copyright notice,
+/ this condition and the following disclaimer.
+/
+/ This software is provided by the copyright holder and contributors "AS IS"
+/ and any warranties related to this software are DISCLAIMED.
+/ The copyright owner or contributors be NOT LIABLE for any damages caused
+/ by use of this software.
+/----------------------------------------------------------------------------*/
diff --git a/software/sys_controller/ulibSD/spi_io.c b/software/sys_controller/ulibSD/spi_io.c
new file mode 100644
index 0000000..c27e0b0
--- /dev/null
+++ b/software/sys_controller/ulibSD/spi_io.c
@@ -0,0 +1,46 @@
+#include "spi_io.h"
+
+#define SD_SLAVE_ID 0
+
+void SPI_Init (void) {
+ return;
+}
+
+BYTE SPI_RW (BYTE d) {
+ BYTE rdata;
+
+ alt_avalon_spi_command(SPI_0_BASE, SD_SLAVE_ID, 1, &d, 1, &rdata, 0);
+ return rdata;
+}
+
+void SPI_Release (void) {
+ return;
+}
+
+inline void SPI_CS_Low (void) {
+ return;
+}
+
+inline void SPI_CS_High (void){
+ return;
+}
+
+inline void SPI_Freq_High (void) {
+ return;
+}
+
+inline void SPI_Freq_Low (void) {
+ return;
+}
+
+void SPI_Timer_On (WORD ms) {
+
+}
+
+inline BOOL SPI_Timer_Status (void) {
+
+}
+
+inline void SPI_Timer_Off (void) {
+
+}
diff --git a/software/sys_controller/ulibSD/spi_io.h b/software/sys_controller/ulibSD/spi_io.h
new file mode 100644
index 0000000..cd36813
--- /dev/null
+++ b/software/sys_controller/ulibSD/spi_io.h
@@ -0,0 +1,96 @@
+/*
+ * spi_io.h
+ * Author: Nelson Lombardo (C) 2015
+ * e-mail: nelson.lombardo@gmail.com
+ * License at the end of file.
+ */
+
+#ifndef _SPI_IO_H_
+#define _SPI_IO_H_
+
+#include "integer.h" /* Type redefinition for portability */
+
+
+/******************************************************************************
+ Public methods
+ *****************************************************************************/
+
+/**
+ \brief Initialize SPI hardware
+ */
+void SPI_Init (void);
+
+/**
+ \brief Read/Write a single byte.
+ \param d Byte to send.
+ \return Byte that arrived.
+ */
+BYTE SPI_RW (BYTE d);
+
+/**
+ \brief Flush of SPI buffer.
+ */
+void SPI_Release (void);
+
+/**
+ \brief Selecting function in SPI terms, associated with SPI module.
+ */
+void SPI_CS_Low (void);
+
+/**
+ \brief Deselecting function in SPI terms, associated with SPI module.
+ */
+void SPI_CS_High (void);
+
+/**
+ \brief Setting frequency of SPI's clock to maximun possible.
+ */
+void SPI_Freq_High (void);
+
+/**
+ \brief Setting frequency of SPI's clock equal or lower than 400kHz.
+ */
+void SPI_Freq_Low (void);
+
+/**
+ \brief Start a non-blocking timer.
+ \param ms Milliseconds.
+ */
+void SPI_Timer_On (WORD ms);
+
+/**
+ \brief Check the status of non-blocking timer.
+ \return Status, TRUE if timeout is not reach yet.
+ */
+BOOL SPI_Timer_Status (void);
+
+/**
+ \brief Stop of non-blocking timer. Mandatory.
+ */
+void SPI_Timer_Off (void);
+
+#endif
+
+/*
+The MIT License (MIT)
+
+Copyright (c) 2015 Nelson Lombardo
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
diff --git a/software/sys_controller_bsp/Makefile b/software/sys_controller_bsp/Makefile
index 2ecc07c..8802349 100644
--- a/software/sys_controller_bsp/Makefile
+++ b/software/sys_controller_bsp/Makefile
@@ -202,13 +202,6 @@ GENERATED_C_LIB_SRCS += alt_sys_init.c
# used to build each file.
#-------------------------------------------------------------------------------
-# altera_up_sd_card_avalon_interface_mod_driver sources root
-Altera_UP_SD_Card_Avalon_Interface_mod_driver_SRCS_ROOT := drivers
-
-# altera_up_sd_card_avalon_interface_mod_driver sources
-Altera_UP_SD_Card_Avalon_Interface_mod_driver_C_LIB_SRCS := \
- $(Altera_UP_SD_Card_Avalon_Interface_mod_driver_SRCS_ROOT)/src/Altera_UP_SD_Card_Avalon_Interface_mod.c
-
# altera_avalon_jtag_uart_driver sources root
altera_avalon_jtag_uart_driver_SRCS_ROOT := drivers
@@ -224,6 +217,22 @@ altera_avalon_jtag_uart_driver_C_LIB_SRCS := \
altera_avalon_pio_driver_SRCS_ROOT := drivers
# altera_avalon_pio_driver sources
+# altera_avalon_spi_driver sources root
+altera_avalon_spi_driver_SRCS_ROOT := drivers
+
+# altera_avalon_spi_driver sources
+altera_avalon_spi_driver_C_LIB_SRCS := \
+ $(altera_avalon_spi_driver_SRCS_ROOT)/src/altera_avalon_spi.c
+
+# altera_avalon_timer_driver sources root
+altera_avalon_timer_driver_SRCS_ROOT := drivers
+
+# altera_avalon_timer_driver sources
+altera_avalon_timer_driver_C_LIB_SRCS := \
+ $(altera_avalon_timer_driver_SRCS_ROOT)/src/altera_avalon_timer_sc.c \
+ $(altera_avalon_timer_driver_SRCS_ROOT)/src/altera_avalon_timer_ts.c \
+ $(altera_avalon_timer_driver_SRCS_ROOT)/src/altera_avalon_timer_vars.c
+
# altera_epcq_controller_mod_driver sources root
altera_epcq_controller_mod_driver_SRCS_ROOT := drivers
@@ -345,8 +354,9 @@ nios2_hw_crc32_driver_C_LIB_SRCS := \
# Assemble all component C source files
COMPONENT_C_LIB_SRCS += \
- $(Altera_UP_SD_Card_Avalon_Interface_mod_driver_C_LIB_SRCS) \
$(altera_avalon_jtag_uart_driver_C_LIB_SRCS) \
+ $(altera_avalon_spi_driver_C_LIB_SRCS) \
+ $(altera_avalon_timer_driver_C_LIB_SRCS) \
$(altera_epcq_controller_mod_driver_C_LIB_SRCS) \
$(altera_nios2_gen2_hal_driver_C_LIB_SRCS) \
$(hal_C_LIB_SRCS) \
diff --git a/software/sys_controller_bsp/alt_sys_init.c b/software/sys_controller_bsp/alt_sys_init.c
index ebab50c..50c29f4 100644
--- a/software/sys_controller_bsp/alt_sys_init.c
+++ b/software/sys_controller_bsp/alt_sys_init.c
@@ -4,7 +4,7 @@
* Machine generated for CPU 'nios2_qsys_0' in SOPC Builder design 'sys'
* SOPC Builder design path: ../../sys.sopcinfo
*
- * Generated: Wed Dec 30 21:13:11 EET 2015
+ * Generated: Sun Oct 16 12:18:06 EEST 2016
*/
/*
@@ -59,8 +59,9 @@
*/
#include "altera_nios2_gen2_irq.h"
-#include "Altera_UP_SD_Card_Avalon_Interface_mod.h"
#include "altera_avalon_jtag_uart.h"
+#include "altera_avalon_spi.h"
+#include "altera_avalon_timer.h"
#include "altera_epcq_controller_mod.h"
#include "i2c_opencores.h"
@@ -70,8 +71,9 @@
ALTERA_NIOS2_GEN2_IRQ_INSTANCE ( NIOS2_QSYS_0, nios2_qsys_0);
ALTERA_AVALON_JTAG_UART_INSTANCE ( JTAG_UART_0, jtag_uart_0);
+ALTERA_AVALON_SPI_INSTANCE ( SPI_0, spi_0);
+ALTERA_AVALON_TIMER_INSTANCE ( TIMER_0, timer_0);
ALTERA_EPCQ_CONTROLLER_MOD_AVL_MEM_AVL_CSR_INSTANCE ( EPCQ_CONTROLLER_0, EPCQ_CONTROLLER_0_AVL_MEM, EPCQ_CONTROLLER_0_AVL_CSR, epcq_controller_0);
-ALTERA_UP_SD_CARD_AVALON_INTERFACE_MOD_INSTANCE ( ALTERA_UP_SD_CARD_AVALON_INTERFACE_0, Altera_UP_SD_Card_Avalon_Interface_0);
I2C_OPENCORES_INSTANCE ( I2C_OPENCORES_0, i2c_opencores_0);
/*
@@ -95,8 +97,9 @@ void alt_irq_init ( const void* base )
void alt_sys_init( void )
{
+ ALTERA_AVALON_TIMER_INIT ( TIMER_0, timer_0);
ALTERA_AVALON_JTAG_UART_INIT ( JTAG_UART_0, jtag_uart_0);
+ ALTERA_AVALON_SPI_INIT ( SPI_0, spi_0);
ALTERA_EPCQ_CONTROLLER_MOD_INIT ( EPCQ_CONTROLLER_0, epcq_controller_0);
- ALTERA_UP_SD_CARD_AVALON_INTERFACE_MOD_INIT ( ALTERA_UP_SD_CARD_AVALON_INTERFACE_0, Altera_UP_SD_Card_Avalon_Interface_0);
I2C_OPENCORES_INIT ( I2C_OPENCORES_0, i2c_opencores_0);
}
diff --git a/software/sys_controller_bsp/libhal_bsp.a b/software/sys_controller_bsp/libhal_bsp.a
index 842d71b..b4bab94 100644
Binary files a/software/sys_controller_bsp/libhal_bsp.a and b/software/sys_controller_bsp/libhal_bsp.a differ
diff --git a/software/sys_controller_bsp/linker.h b/software/sys_controller_bsp/linker.h
index 6c690c2..c045a5f 100644
--- a/software/sys_controller_bsp/linker.h
+++ b/software/sys_controller_bsp/linker.h
@@ -4,7 +4,7 @@
* Machine generated for CPU 'nios2_qsys_0' in SOPC Builder design 'sys'
* SOPC Builder design path: ../../sys.sopcinfo
*
- * Generated: Sun May 03 12:35:19 EEST 2015
+ * Generated: Sun Oct 16 12:18:06 EEST 2016
*/
/*
@@ -68,7 +68,7 @@
#define EPCQ_CONTROLLER_0_AVL_MEM_REGION_BASE 0x0
#define EPCQ_CONTROLLER_0_AVL_MEM_REGION_SPAN 8388608
#define ONCHIP_MEMORY2_0_REGION_BASE 0x810020
-#define ONCHIP_MEMORY2_0_REGION_SPAN 36832
+#define ONCHIP_MEMORY2_0_REGION_SPAN 40928
#define RESET_REGION_BASE 0x810000
#define RESET_REGION_SPAN 32
diff --git a/software/sys_controller_bsp/linker.x b/software/sys_controller_bsp/linker.x
index 133a801..bb7d4db 100644
--- a/software/sys_controller_bsp/linker.x
+++ b/software/sys_controller_bsp/linker.x
@@ -4,7 +4,7 @@
* Machine generated for CPU 'nios2_qsys_0' in SOPC Builder design 'sys'
* SOPC Builder design path: ../../sys.sopcinfo
*
- * Generated: Sun May 03 12:35:19 EEST 2015
+ * Generated: Sun Oct 16 12:18:06 EEST 2016
*/
/*
@@ -52,7 +52,7 @@ MEMORY
{
epcq_controller_0_avl_mem : ORIGIN = 0x0, LENGTH = 8388608
reset : ORIGIN = 0x810000, LENGTH = 32
- onchip_memory2_0 : ORIGIN = 0x810020, LENGTH = 36832
+ onchip_memory2_0 : ORIGIN = 0x810020, LENGTH = 40928
}
/* Define symbols for each memory base-address */
@@ -386,7 +386,7 @@ SECTIONS
/*
* Don't override this, override the __alt_stack_* symbols instead.
*/
-__alt_data_end = 0x819000;
+__alt_data_end = 0x81a000;
/*
* The next two symbols define the location of the default stack. You can
@@ -402,4 +402,4 @@ PROVIDE( __alt_stack_limit = __alt_stack_base );
* Override this symbol to put the heap in a different memory.
*/
PROVIDE( __alt_heap_start = end );
-PROVIDE( __alt_heap_limit = 0x819000 );
+PROVIDE( __alt_heap_limit = 0x81a000 );
diff --git a/software/sys_controller_bsp/mem_init.mk b/software/sys_controller_bsp/mem_init.mk
index 5f0d286..33caacc 100644
--- a/software/sys_controller_bsp/mem_init.mk
+++ b/software/sys_controller_bsp/mem_init.mk
@@ -199,8 +199,8 @@ HDL_SIM_INSTALL_FILES += $(HDL_SIM_INSTALL_DIR)/$(MEM_1).dat
SYM_FILES += $(HDL_SIM_DIR)/$(MEM_1).sym
HDL_SIM_INSTALL_FILES += $(HDL_SIM_INSTALL_DIR)/$(MEM_1).sym
$(MEM_1)_START := 0x00810000
-$(MEM_1)_END := 0x00818fff
-$(MEM_1)_SPAN := 0x00009000
+$(MEM_1)_END := 0x00819fff
+$(MEM_1)_SPAN := 0x0000a000
$(MEM_1)_HIERARCHICAL_PATH := onchip_memory2_0
$(MEM_1)_WIDTH := 32
$(MEM_1)_HEX_DATA_WIDTH := 32
diff --git a/software/sys_controller_bsp/memory.gdb b/software/sys_controller_bsp/memory.gdb
index a7365f0..41fd763 100644
--- a/software/sys_controller_bsp/memory.gdb
+++ b/software/sys_controller_bsp/memory.gdb
@@ -3,7 +3,7 @@
# Machine generated for CPU 'nios2_qsys_0' in SOPC Builder design 'sys'
# SOPC Builder design path: ../../sys.sopcinfo
#
-# Generated: Sun May 03 12:35:19 EEST 2015
+# Generated: Sun Oct 16 12:18:06 EEST 2016
# DO NOT MODIFY THIS FILE
#
@@ -50,4 +50,4 @@
memory 0x0 0x800000 cache
# onchip_memory2_0
-memory 0x810000 0x819000 cache
+memory 0x810000 0x81a000 cache
diff --git a/software/sys_controller_bsp/settings.bsp b/software/sys_controller_bsp/settings.bsp
index 7cc67d7..43498a2 100644
--- a/software/sys_controller_bsp/settings.bsp
+++ b/software/sys_controller_bsp/settings.bsp
@@ -2,9 +2,9 @@
hal
default
- Sep 4, 2016 3:02:52 AM
- 1472947372974
- ./
+ Oct 16, 2016 12:18:06 PM
+ 1476609486611
+ /home/markus/Code/ossc/software/sys_controller_bsp
settings.bsp
../../sys.sopcinfo
default
@@ -894,67 +894,73 @@
onchip_memory2_0
- 0x00810000 - 0x00818FFF
- 36864
+ 0x00810000 - 0x00819FFF
+ 40960
memory
- Altera_UP_SD_Card_Avalon_Interface_0
- 0x00821000 - 0x008213FF
- 1024
+ spi_0
+ 0x00821000 - 0x0082101F
+ 32
+
+ timer_0
+ 0x00821020 - 0x0082103F
+ 32
+ timer
+
epcq_controller_0_avl_csr
- 0x00821400 - 0x0082141F
+ 0x00821040 - 0x0082105F
32
i2c_opencores_0
- 0x00821420 - 0x0082143F
+ 0x00821060 - 0x0082107F
32
pio_5
- 0x00821440 - 0x0082144F
+ 0x00821080 - 0x0082108F
16
pio_4
- 0x00821450 - 0x0082145F
+ 0x00821090 - 0x0082109F
16
pio_3
- 0x00821460 - 0x0082146F
+ 0x008210A0 - 0x008210AF
16
pio_2
- 0x00821470 - 0x0082147F
+ 0x008210B0 - 0x008210BF
16
pio_1
- 0x00821480 - 0x0082148F
+ 0x008210C0 - 0x008210CF
16
pio_0
- 0x00821490 - 0x0082149F
+ 0x008210D0 - 0x008210DF
16
jtag_uart_0
- 0x008214A0 - 0x008214A7
+ 0x008210E0 - 0x008210E7
8
printable
diff --git a/software/sys_controller_bsp/system.h b/software/sys_controller_bsp/system.h
index 385398c..c9356df 100644
--- a/software/sys_controller_bsp/system.h
+++ b/software/sys_controller_bsp/system.h
@@ -4,7 +4,7 @@
* Machine generated for CPU 'nios2_qsys_0' in SOPC Builder design 'sys'
* SOPC Builder design path: ../../sys.sopcinfo
*
- * Generated: Wed Dec 30 21:04:43 EET 2015
+ * Generated: Sun Oct 16 12:18:06 EEST 2016
*/
/*
@@ -55,20 +55,6 @@
#include "linker.h"
-/*
- * Altera_UP_SD_Card_Avalon_Interface_0 configuration
- *
- */
-
-#define ALTERA_UP_SD_CARD_AVALON_INTERFACE_0_BASE 0x821000
-#define ALTERA_UP_SD_CARD_AVALON_INTERFACE_0_IRQ -1
-#define ALTERA_UP_SD_CARD_AVALON_INTERFACE_0_IRQ_INTERRUPT_CONTROLLER_ID -1
-#define ALTERA_UP_SD_CARD_AVALON_INTERFACE_0_NAME "/dev/Altera_UP_SD_Card_Avalon_Interface_0"
-#define ALTERA_UP_SD_CARD_AVALON_INTERFACE_0_SPAN 1024
-#define ALTERA_UP_SD_CARD_AVALON_INTERFACE_0_TYPE "Altera_UP_SD_Card_Avalon_Interface_mod"
-#define ALT_MODULE_CLASS_Altera_UP_SD_Card_Avalon_Interface_0 Altera_UP_SD_Card_Avalon_Interface_mod
-
-
/*
* CPU configuration
*
@@ -164,11 +150,12 @@
#define __ALTERA_AVALON_JTAG_UART
#define __ALTERA_AVALON_ONCHIP_MEMORY2
#define __ALTERA_AVALON_PIO
+#define __ALTERA_AVALON_SPI
+#define __ALTERA_AVALON_TIMER
#define __ALTERA_EPCQ_CONTROLLER_MOD
#define __ALTERA_NIOS2_GEN2
#define __ALTERA_NIOS_CUSTOM_INSTR_BITSWAP
#define __ALTERA_NIOS_CUSTOM_INSTR_ENDIANCONVERTER
-#define __ALTERA_UP_SD_CARD_AVALON_INTERFACE_MOD
#define __I2C_OPENCORES
#define __NIOS2_HW_CRC32
@@ -189,19 +176,19 @@
#define ALT_NUM_INTERNAL_INTERRUPT_CONTROLLERS 1
#define ALT_NUM_INTERRUPT_CONTROLLERS 1
#define ALT_STDERR "/dev/jtag_uart_0"
-#define ALT_STDERR_BASE 0x8214a0
+#define ALT_STDERR_BASE 0x8210e0
#define ALT_STDERR_DEV jtag_uart_0
#define ALT_STDERR_IS_JTAG_UART
#define ALT_STDERR_PRESENT
#define ALT_STDERR_TYPE "altera_avalon_jtag_uart"
#define ALT_STDIN "/dev/jtag_uart_0"
-#define ALT_STDIN_BASE 0x8214a0
+#define ALT_STDIN_BASE 0x8210e0
#define ALT_STDIN_DEV jtag_uart_0
#define ALT_STDIN_IS_JTAG_UART
#define ALT_STDIN_PRESENT
#define ALT_STDIN_TYPE "altera_avalon_jtag_uart"
#define ALT_STDOUT "/dev/jtag_uart_0"
-#define ALT_STDOUT_BASE 0x8214a0
+#define ALT_STDOUT_BASE 0x8210e0
#define ALT_STDOUT_DEV jtag_uart_0
#define ALT_STDOUT_IS_JTAG_UART
#define ALT_STDOUT_PRESENT
@@ -215,9 +202,9 @@
*/
#define ALT_MODULE_CLASS_epcq_controller_0_avl_csr altera_epcq_controller_mod
-#define EPCQ_CONTROLLER_0_AVL_CSR_BASE 0x821400
+#define EPCQ_CONTROLLER_0_AVL_CSR_BASE 0x821040
#define EPCQ_CONTROLLER_0_AVL_CSR_FLASH_TYPE "EPCS64"
-#define EPCQ_CONTROLLER_0_AVL_CSR_IRQ 1
+#define EPCQ_CONTROLLER_0_AVL_CSR_IRQ 2
#define EPCQ_CONTROLLER_0_AVL_CSR_IRQ_INTERRUPT_CONTROLLER_ID 0
#define EPCQ_CONTROLLER_0_AVL_CSR_IS_EPCS 1
#define EPCQ_CONTROLLER_0_AVL_CSR_NAME "/dev/epcq_controller_0_avl_csr"
@@ -265,8 +252,8 @@
*/
#define ALT_MODULE_CLASS_i2c_opencores_0 i2c_opencores
-#define I2C_OPENCORES_0_BASE 0x821420
-#define I2C_OPENCORES_0_IRQ 0
+#define I2C_OPENCORES_0_BASE 0x821060
+#define I2C_OPENCORES_0_IRQ 3
#define I2C_OPENCORES_0_IRQ_INTERRUPT_CONTROLLER_ID 0
#define I2C_OPENCORES_0_NAME "/dev/i2c_opencores_0"
#define I2C_OPENCORES_0_SPAN 32
@@ -279,8 +266,8 @@
*/
#define ALT_MODULE_CLASS_jtag_uart_0 altera_avalon_jtag_uart
-#define JTAG_UART_0_BASE 0x8214a0
-#define JTAG_UART_0_IRQ 2
+#define JTAG_UART_0_BASE 0x8210e0
+#define JTAG_UART_0_IRQ 1
#define JTAG_UART_0_IRQ_INTERRUPT_CONTROLLER_ID 0
#define JTAG_UART_0_NAME "/dev/jtag_uart_0"
#define JTAG_UART_0_READ_DEPTH 64
@@ -314,8 +301,8 @@
#define ONCHIP_MEMORY2_0_READ_DURING_WRITE_MODE "DONT_CARE"
#define ONCHIP_MEMORY2_0_SINGLE_CLOCK_OP 0
#define ONCHIP_MEMORY2_0_SIZE_MULTIPLE 1
-#define ONCHIP_MEMORY2_0_SIZE_VALUE 36864
-#define ONCHIP_MEMORY2_0_SPAN 36864
+#define ONCHIP_MEMORY2_0_SIZE_VALUE 40960
+#define ONCHIP_MEMORY2_0_SPAN 40960
#define ONCHIP_MEMORY2_0_TYPE "altera_avalon_onchip_memory2"
#define ONCHIP_MEMORY2_0_WRITABLE 1
@@ -326,7 +313,7 @@
*/
#define ALT_MODULE_CLASS_pio_0 altera_avalon_pio
-#define PIO_0_BASE 0x821490
+#define PIO_0_BASE 0x8210d0
#define PIO_0_BIT_CLEARING_EDGE_REGISTER 0
#define PIO_0_BIT_MODIFYING_OUTPUT_REGISTER 0
#define PIO_0_CAPTURE 0
@@ -353,7 +340,7 @@
*/
#define ALT_MODULE_CLASS_pio_1 altera_avalon_pio
-#define PIO_1_BASE 0x821480
+#define PIO_1_BASE 0x8210c0
#define PIO_1_BIT_CLEARING_EDGE_REGISTER 0
#define PIO_1_BIT_MODIFYING_OUTPUT_REGISTER 0
#define PIO_1_CAPTURE 0
@@ -380,7 +367,7 @@
*/
#define ALT_MODULE_CLASS_pio_2 altera_avalon_pio
-#define PIO_2_BASE 0x821470
+#define PIO_2_BASE 0x8210b0
#define PIO_2_BIT_CLEARING_EDGE_REGISTER 0
#define PIO_2_BIT_MODIFYING_OUTPUT_REGISTER 0
#define PIO_2_CAPTURE 0
@@ -407,7 +394,7 @@
*/
#define ALT_MODULE_CLASS_pio_3 altera_avalon_pio
-#define PIO_3_BASE 0x821460
+#define PIO_3_BASE 0x8210a0
#define PIO_3_BIT_CLEARING_EDGE_REGISTER 0
#define PIO_3_BIT_MODIFYING_OUTPUT_REGISTER 0
#define PIO_3_CAPTURE 0
@@ -434,7 +421,7 @@
*/
#define ALT_MODULE_CLASS_pio_4 altera_avalon_pio
-#define PIO_4_BASE 0x821450
+#define PIO_4_BASE 0x821090
#define PIO_4_BIT_CLEARING_EDGE_REGISTER 0
#define PIO_4_BIT_MODIFYING_OUTPUT_REGISTER 0
#define PIO_4_CAPTURE 0
@@ -461,7 +448,7 @@
*/
#define ALT_MODULE_CLASS_pio_5 altera_avalon_pio
-#define PIO_5_BASE 0x821440
+#define PIO_5_BASE 0x821080
#define PIO_5_BIT_CLEARING_EDGE_REGISTER 0
#define PIO_5_BIT_MODIFYING_OUTPUT_REGISTER 0
#define PIO_5_CAPTURE 0
@@ -481,4 +468,61 @@
#define PIO_5_SPAN 16
#define PIO_5_TYPE "altera_avalon_pio"
+
+/*
+ * spi_0 configuration
+ *
+ */
+
+#define ALT_MODULE_CLASS_spi_0 altera_avalon_spi
+#define SPI_0_BASE 0x821000
+#define SPI_0_CLOCKMULT 1
+#define SPI_0_CLOCKPHASE 0
+#define SPI_0_CLOCKPOLARITY 0
+#define SPI_0_CLOCKUNITS "Hz"
+#define SPI_0_DATABITS 8
+#define SPI_0_DATAWIDTH 16
+#define SPI_0_DELAYMULT "1.0E-9"
+#define SPI_0_DELAYUNITS "ns"
+#define SPI_0_EXTRADELAY 0
+#define SPI_0_INSERT_SYNC 0
+#define SPI_0_IRQ 4
+#define SPI_0_IRQ_INTERRUPT_CONTROLLER_ID 0
+#define SPI_0_ISMASTER 1
+#define SPI_0_LSBFIRST 0
+#define SPI_0_NAME "/dev/spi_0"
+#define SPI_0_NUMSLAVES 1
+#define SPI_0_PREFIX "spi_"
+#define SPI_0_SPAN 32
+#define SPI_0_SYNC_REG_DEPTH 2
+#define SPI_0_TARGETCLOCK 13500000u
+#define SPI_0_TARGETSSDELAY "0.0"
+#define SPI_0_TYPE "altera_avalon_spi"
+
+
+/*
+ * timer_0 configuration
+ *
+ */
+
+#define ALT_MODULE_CLASS_timer_0 altera_avalon_timer
+#define TIMER_0_ALWAYS_RUN 0
+#define TIMER_0_BASE 0x821020
+#define TIMER_0_COUNTER_SIZE 32
+#define TIMER_0_FIXED_PERIOD 0
+#define TIMER_0_FREQ 27000000
+#define TIMER_0_IRQ 0
+#define TIMER_0_IRQ_INTERRUPT_CONTROLLER_ID 0
+#define TIMER_0_LOAD_VALUE 26
+#define TIMER_0_MULT 1.0E-6
+#define TIMER_0_NAME "/dev/timer_0"
+#define TIMER_0_PERIOD 1
+#define TIMER_0_PERIOD_UNITS "us"
+#define TIMER_0_RESET_OUTPUT 0
+#define TIMER_0_SNAPSHOT 1
+#define TIMER_0_SPAN 32
+#define TIMER_0_TICKS_PER_SEC 1000000
+#define TIMER_0_TIMEOUT_PULSE_OUTPUT 0
+#define TIMER_0_TYPE "altera_avalon_timer"
+
#endif /* __SYSTEM_H_ */
diff --git a/sys.qsys b/sys.qsys
index 65116c2..eac50d1 100644
--- a/sys.qsys
+++ b/sys.qsys
@@ -9,22 +9,6 @@
categories="System" />
-
-
-
-
@@ -391,7 +399,7 @@
- ]]>
+ ]]>
@@ -430,14 +438,14 @@
- ]]>
+ ]]>
-
+
@@ -578,7 +586,7 @@
-
+
@@ -674,22 +682,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
-
+
+
-
+
-
+
-
+
+
+
+
+
+
+
-
+
+
-
+
java.lang.Integer
- 1472947093
+ 1476609301
false
true
false
@@ -95,602 +95,6 @@
true
true
-
-
-
- java.lang.String
- CYCLONEIVE
- false
- true
- false
- true
- DEVICE_FAMILY
-
-
- java.lang.Long
- 27000000
- false
- true
- false
- true
- CLOCK_RATE
- clk
-
-
- java.lang.String
- Cyclone IV E
- false
- true
- false
- true
- DEVICE_FAMILY
-
-
- boolean
- false
- false
- true
- true
- true
-
-
-
-
- embeddedsw.configuration.isFlash
- 0
-
-
- embeddedsw.configuration.isMemoryDevice
- 0
-
-
- embeddedsw.configuration.isNonVolatileStorage
- 0
-
-
- embeddedsw.configuration.isPrintableDevice
- 0
-
-
- com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment
- DYNAMIC
- false
- true
- false
- true
-
-
- int
- 0
- false
- true
- false
- true
-
-
- java.math.BigInteger
- 1024
- true
- true
- false
- true
-
-
- com.altera.sopcmodel.avalon.EAddrBurstUnits
- WORDS
- false
- true
- true
- true
-
-
- boolean
- false
- false
- true
- false
- true
-
-
- java.lang.String
- clk
- false
- true
- true
- true
-
-
- java.lang.String
- reset
- false
- true
- true
- true
-
-
- int
- 8
- false
- true
- true
- true
-
-
- java.math.BigInteger
-
- false
- true
- false
- true
-
-
- com.altera.entityinterfaces.IConnectionPoint
-
- false
- true
- false
- true
-
-
- boolean
- false
- false
- true
- true
- true
-
-
- com.altera.sopcmodel.avalon.EAddrBurstUnits
- WORDS
- false
- true
- true
- true
-
-
- boolean
- false
- false
- true
- false
- true
-
-
- java.math.BigInteger
- 0
- false
- true
- true
- true
-
-
- int
- 0
- false
- false
- true
- true
-
-
- boolean
- false
- false
- true
- false
- true
-
-
- boolean
- false
- false
- true
- false
- true
-
-
- boolean
- false
- false
- true
- false
- true
-
-
- boolean
- false
- false
- true
- false
- true
-
-
- boolean
- false
- false
- true
- false
- true
-
-
- boolean
- false
- false
- true
- true
- true
-
-
- int
- 0
- false
- false
- true
- true
-
-
- int
- 0
- false
- false
- true
- true
-
-
- int
- 1
- false
- true
- false
- true
-
-
- boolean
- false
- false
- true
- false
- true
-
-
- int
- 0
- false
- true
- true
- true
-
-
- int
- 1
- false
- true
- false
- true
-
-
- int
- 1
- false
- false
- true
- true
-
-
- boolean
- false
- false
- true
- false
- true
-
-
- boolean
- false
- false
- true
- false
- true
-
-
- int
- 0
- false
- false
- true
- true
-
-
- com.altera.sopcmodel.avalon.TimingUnits
- Cycles
- false
- false
- true
- true
-
-
- boolean
- false
- false
- true
- false
- true
-
-
- boolean
- false
- false
- true
- false
- true
-
-
- int
- 0
- false
- true
- false
- true
-
-
- int
- 0
- false
- true
- false
- true
-
-
- int
- 0
- false
- false
- true
- true
-
-
- java.lang.String
- UNKNOWN
- false
- true
- true
- true
-
-
- boolean
- false
- false
- true
- true
- true
-
- avalon
- false
-
- i_avalon_chip_select
- Input
- 1
- chipselect
-
-
- i_avalon_address
- Input
- 8
- address
-
-
- i_avalon_read
- Input
- 1
- read
-
-
- i_avalon_write
- Input
- 1
- write
-
-
- i_avalon_byteenable
- Input
- 4
- byteenable
-
-
- i_avalon_writedata
- Input
- 32
- writedata
-
-
- o_avalon_readdata
- Output
- 32
- readdata
-
-
- o_avalon_waitrequest
- Output
- 1
- waitrequest
-
-
-
-
-
- boolean
- false
- false
- true
- false
- true
-
-
- java.lang.String
-
- false
- true
- false
- true
-
-
- java.lang.String
- UNKNOWN
- false
- true
- true
- true
-
-
- boolean
- false
- false
- true
- true
- true
-
-
- java.lang.Boolean
- true
- true
- true
- false
- true
-
-
- java.lang.Long
- 27000000
- true
- true
- false
- true
-
- clock
- false
-
- i_clock
- Input
- 1
- clk
-
-
-
-
-
- java.lang.String
- clk
- false
- true
- true
- true
-
-
- com.altera.sopcmodel.reset.Reset$Edges
- DEASSERT
- false
- true
- true
- true
-
-
- java.lang.String
- UNKNOWN
- false
- true
- true
- true
-
-
- boolean
- false
- false
- true
- true
- true
-
- reset
- false
-
- i_reset_n
- Input
- 1
- reset_n
-
-
-
-
-
- java.lang.String
-
- false
- true
- true
- true
-
-
- java.lang.String
-
- false
- true
- true
- true
-
-
- java.lang.String
- UNKNOWN
- false
- true
- true
- true
-
-
- boolean
- false
- false
- true
- true
- true
-
- conduit
- false
-
- b_SD_cmd
- Bidir
- 1
- export
-
-
- b_SD_dat
- Bidir
- 1
- export
-
-
- b_SD_dat3
- Bidir
- 1
- export
-
-
- o_SD_clock
- Output
- 1
- export
-
-
-
@@ -968,18 +372,24 @@ parameters are a RESULT of the module parameters. -->
clk
pio_4.clk
-
- false
- Altera_UP_SD_Card_Avalon_Interface_0
- clk
- Altera_UP_SD_Card_Avalon_Interface_0.clk
-
false
pio_5
clk
pio_5.clk
+
+ false
+ timer_0
+ clk
+ timer_0.clk
+
+
+ false
+ spi_0
+ clk
+ spi_0.clk
+
false
onchip_memory2_0
@@ -5351,7 +4761,7 @@ the requested settings for a module instance. -->
java.lang.String
- ]]>
+ ]]>
false
true
false
@@ -5371,7 +4781,7 @@ the requested settings for a module instance. -->
java.lang.String
- ]]>
+ ]]>
false
true
false
@@ -5500,7 +4910,7 @@ the requested settings for a module instance. -->
long
- 7
+ 31
false
true
false
@@ -6042,23 +5452,15 @@ parameters are a RESULT of the module parameters. -->
jtag_uart_0
avalon_jtag_slave
jtag_uart_0.avalon_jtag_slave
- 8524960
+ 8524000
8
-
- false
- Altera_UP_SD_Card_Avalon_Interface_0
- avalon_sdcard_slave
- Altera_UP_SD_Card_Avalon_Interface_0.avalon_sdcard_slave
- 8523776
- 1024
-
false
i2c_opencores_0
avalon_slave_0
i2c_opencores_0.avalon_slave_0
- 8524832
+ 8523872
32
@@ -6066,7 +5468,7 @@ parameters are a RESULT of the module parameters. -->
epcq_controller_0
avl_csr
epcq_controller_0.avl_csr
- 8524800
+ 8523840
32
@@ -6091,14 +5493,14 @@ parameters are a RESULT of the module parameters. -->
s1
onchip_memory2_0.s1
8454144
- 36864
+ 40960
false
pio_0
s1
pio_0.s1
- 8524944
+ 8523984
16
@@ -6106,7 +5508,7 @@ parameters are a RESULT of the module parameters. -->
pio_1
s1
pio_1.s1
- 8524928
+ 8523968
16
@@ -6114,7 +5516,7 @@ parameters are a RESULT of the module parameters. -->
pio_2
s1
pio_2.s1
- 8524912
+ 8523952
16
@@ -6122,7 +5524,7 @@ parameters are a RESULT of the module parameters. -->
pio_3
s1
pio_3.s1
- 8524896
+ 8523936
16
@@ -6130,7 +5532,7 @@ parameters are a RESULT of the module parameters. -->
pio_4
s1
pio_4.s1
- 8524880
+ 8523920
16
@@ -6138,9 +5540,25 @@ parameters are a RESULT of the module parameters. -->
pio_5
s1
pio_5.s1
- 8524864
+ 8523904
16
+
+ false
+ timer_0
+ s1
+ timer_0.s1
+ 8523808
+ 32
+
+
+ false
+ spi_0
+ spi_control_port
+ spi_0.spi_control_port
+ 8523776
+ 32
+
s1
onchip_memory2_0.s1
8454144
- 36864
+ 40960
@@ -6518,21 +5936,35 @@ parameters are a RESULT of the module parameters. -->
i2c_opencores_0
interrupt_sender
i2c_opencores_0.interrupt_sender
- 0
+ 3
false
epcq_controller_0
interrupt_sender
epcq_controller_0.interrupt_sender
- 1
+ 2
false
jtag_uart_0
irq
jtag_uart_0.irq
- 2
+ 1
+
+
+ false
+ timer_0
+ irq
+ timer_0.irq
+ 0
+
+
+ false
+ spi_0
+ irq
+ spi_0.irq
+ 4
@@ -7541,7 +6973,7 @@ the requested settings for a module instance. -->
embeddedsw.CMacro.SIZE_VALUE
- 36864
+ 40960
embeddedsw.CMacro.WRITABLE
@@ -7641,7 +7073,7 @@ the requested settings for a module instance. -->
long
- 36864
+ 40960
false
true
true
@@ -7901,7 +7333,7 @@ parameters are a RESULT of the module parameters. -->
java.math.BigInteger
- 36864
+ 40960
true
true
false
@@ -7989,7 +7421,7 @@ parameters are a RESULT of the module parameters. -->
java.math.BigInteger
- 36864
+ 40960
false
true
true
@@ -12900,6 +12332,1656 @@ parameters are a RESULT of the module parameters. -->
+
+
+
+ embeddedsw.CMacro.CLOCKMULT
+ 1
+
+
+ embeddedsw.CMacro.CLOCKPHASE
+ 0
+
+
+ embeddedsw.CMacro.CLOCKPOLARITY
+ 0
+
+
+ embeddedsw.CMacro.CLOCKUNITS
+ "Hz"
+
+
+ embeddedsw.CMacro.DATABITS
+ 8
+
+
+ embeddedsw.CMacro.DATAWIDTH
+ 16
+
+
+ embeddedsw.CMacro.DELAYMULT
+ "1.0E-9"
+
+
+ embeddedsw.CMacro.DELAYUNITS
+ "ns"
+
+
+ embeddedsw.CMacro.EXTRADELAY
+ 0
+
+
+ embeddedsw.CMacro.INSERT_SYNC
+ 0
+
+
+ embeddedsw.CMacro.ISMASTER
+ 1
+
+
+ embeddedsw.CMacro.LSBFIRST
+ 0
+
+
+ embeddedsw.CMacro.NUMSLAVES
+ 1
+
+
+ embeddedsw.CMacro.PREFIX
+ "spi_"
+
+
+ embeddedsw.CMacro.SYNC_REG_DEPTH
+ 2
+
+
+ embeddedsw.CMacro.TARGETCLOCK
+ 13500000u
+
+
+ embeddedsw.CMacro.TARGETSSDELAY
+ "0.0"
+
+
+ embeddedsw.dts.compatible
+ altr,spi-1.0
+
+
+ embeddedsw.dts.group
+ spi
+
+
+ embeddedsw.dts.name
+ spi
+
+
+ embeddedsw.dts.vendor
+ altr
+
+
+ int
+ 0
+ false
+ true
+ true
+ true
+
+
+ int
+ 0
+ false
+ true
+ true
+ true
+
+
+ int
+ 8
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+
+ boolean
+ true
+ false
+ true
+ true
+ true
+
+
+ int
+ 1
+ false
+ true
+ true
+ true
+
+
+ int
+ 2
+ false
+ false
+ true
+ true
+
+
+ long
+ 13500000
+ false
+ true
+ true
+ true
+
+
+ double
+ 0.0
+ false
+ false
+ true
+ true
+
+
+ java.lang.String
+ 2.0
+ false
+ true
+ false
+ true
+ AVALON_SPEC
+
+
+ long
+ 27000000
+ false
+ true
+ false
+ true
+ CLOCK_RATE
+ clk
+
+
+ double
+ 1.35E7
+ true
+ true
+ true
+ true
+
+
+ double
+ 0.0
+ true
+ false
+ true
+ true
+
+
+ boolean
+ false
+ true
+ true
+ false
+ true
+
+
+ int
+ 16
+ true
+ true
+ false
+ true
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ java.lang.String
+
+ false
+ true
+ false
+ true
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+
+ java.lang.Boolean
+ true
+ true
+ true
+ false
+ true
+
+
+ java.lang.Long
+ 27000000
+ true
+ true
+ false
+ true
+
+ clock
+ false
+
+ clk
+ Input
+ 1
+ clk
+
+
+
+
+
+ java.lang.String
+ clk
+ false
+ true
+ true
+ true
+
+
+ com.altera.sopcmodel.reset.Reset$Edges
+ DEASSERT
+ false
+ true
+ true
+ true
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+ reset
+ false
+
+ reset_n
+ Input
+ 1
+ reset_n
+
+
+
+
+
+ embeddedsw.configuration.isFlash
+ 0
+
+
+ embeddedsw.configuration.isMemoryDevice
+ 0
+
+
+ embeddedsw.configuration.isNonVolatileStorage
+ 0
+
+
+ embeddedsw.configuration.isPrintableDevice
+ 0
+
+
+ com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment
+ NATIVE
+ false
+ true
+ false
+ true
+
+
+ int
+ 0
+ false
+ true
+ false
+ true
+
+
+ java.math.BigInteger
+ 8
+ true
+ true
+ false
+ true
+
+
+ com.altera.sopcmodel.avalon.EAddrBurstUnits
+ WORDS
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ java.lang.String
+ clk
+ false
+ true
+ true
+ true
+
+
+ java.lang.String
+ reset
+ false
+ true
+ true
+ true
+
+
+ int
+ 8
+ false
+ true
+ true
+ true
+
+
+ java.math.BigInteger
+
+ false
+ true
+ false
+ true
+
+
+ com.altera.entityinterfaces.IConnectionPoint
+
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+
+ com.altera.sopcmodel.avalon.EAddrBurstUnits
+ WORDS
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ java.math.BigInteger
+ 0
+ false
+ true
+ true
+ true
+
+
+ int
+ 0
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+
+ int
+ 0
+ false
+ false
+ true
+ true
+
+
+ int
+ 0
+ false
+ false
+ true
+ true
+
+
+ int
+ 1
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ int
+ 0
+ false
+ true
+ true
+ true
+
+
+ int
+ 1
+ false
+ true
+ false
+ true
+
+
+ int
+ 1
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ int
+ 0
+ false
+ true
+ true
+ true
+
+
+ com.altera.sopcmodel.avalon.TimingUnits
+ Cycles
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ int
+ 0
+ false
+ true
+ false
+ true
+
+
+ int
+ 1
+ false
+ true
+ false
+ true
+
+
+ int
+ 1
+ false
+ true
+ true
+ true
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+ avalon
+ false
+
+ data_from_cpu
+ Input
+ 16
+ writedata
+
+
+ data_to_cpu
+ Output
+ 16
+ readdata
+
+
+ mem_addr
+ Input
+ 3
+ address
+
+
+ read_n
+ Input
+ 1
+ read_n
+
+
+ spi_select
+ Input
+ 1
+ chipselect
+
+
+ write_n
+ Input
+ 1
+ write_n
+
+
+
+
+
+ com.altera.entityinterfaces.IConnectionPoint
+ spi_0.spi_control_port
+ false
+ true
+ true
+ true
+
+
+ java.lang.String
+ clk
+ false
+ true
+ false
+ true
+
+
+ java.lang.String
+ reset
+ false
+ true
+ false
+ true
+
+
+ java.lang.Integer
+
+ false
+ true
+ true
+ true
+
+
+ com.altera.entityinterfaces.IConnectionPoint
+
+ false
+ true
+ true
+ true
+
+
+ com.altera.sopcmodel.interrupt.InterruptConnectionPoint$EIrqScheme
+ NONE
+ false
+ true
+ false
+ true
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+ interrupt
+ false
+
+ irq
+ Output
+ 1
+ irq
+
+
+
+
+
+ java.lang.String
+
+ false
+ true
+ true
+ true
+
+
+ java.lang.String
+
+ false
+ true
+ true
+ true
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+ conduit
+ false
+
+ MISO
+ Input
+ 1
+ export
+
+
+ MOSI
+ Output
+ 1
+ export
+
+
+ SCLK
+ Output
+ 1
+ export
+
+
+ SS_n
+ Output
+ 1
+ export
+
+
+
+
+
+
+ embeddedsw.CMacro.ALWAYS_RUN
+ 0
+
+
+ embeddedsw.CMacro.COUNTER_SIZE
+ 32
+
+
+ embeddedsw.CMacro.FIXED_PERIOD
+ 0
+
+
+ embeddedsw.CMacro.FREQ
+ 27000000
+
+
+ embeddedsw.CMacro.LOAD_VALUE
+ 26
+
+
+ embeddedsw.CMacro.MULT
+ 0.000001
+
+
+ embeddedsw.CMacro.PERIOD
+ 1
+
+
+ embeddedsw.CMacro.PERIOD_UNITS
+ us
+
+
+ embeddedsw.CMacro.RESET_OUTPUT
+ 0
+
+
+ embeddedsw.CMacro.SNAPSHOT
+ 1
+
+
+ embeddedsw.CMacro.TICKS_PER_SEC
+ 1000000
+
+
+ embeddedsw.CMacro.TIMEOUT_PULSE_OUTPUT
+ 0
+
+
+ embeddedsw.dts.compatible
+ altr,timer-1.0
+
+
+ embeddedsw.dts.group
+ timer
+
+
+ embeddedsw.dts.name
+ timer
+
+
+ embeddedsw.dts.params.clock-frequency
+ 27000000
+
+
+ embeddedsw.dts.vendor
+ altr
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+
+ int
+ 32
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+
+ java.lang.String
+ 1
+ false
+ true
+ true
+ true
+
+
+ java.lang.String
+ USEC
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+
+ boolean
+ true
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+
+ long
+ 27000000
+ false
+ true
+ false
+ true
+ CLOCK_RATE
+ clk
+
+
+ int
+ 2
+ false
+ true
+ false
+ true
+
+
+ java.lang.String
+ FULL_FEATURED
+ true
+ true
+ false
+ true
+
+
+ java.lang.String
+ us
+ true
+ true
+ false
+ true
+
+
+ double
+ 1.0E-6
+ true
+ true
+ false
+ true
+
+
+ java.lang.String
+ 26
+ true
+ true
+ false
+ true
+
+
+ double
+ 1.0E-6
+ true
+ true
+ false
+ true
+
+
+ double
+ 1000000.0
+ true
+ true
+ false
+ true
+
+
+ int
+ 3
+ true
+ true
+ false
+ true
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ java.lang.String
+
+ false
+ true
+ false
+ true
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+
+ java.lang.Boolean
+ true
+ true
+ true
+ false
+ true
+
+
+ java.lang.Long
+ 27000000
+ true
+ true
+ false
+ true
+
+ clock
+ false
+
+ clk
+ Input
+ 1
+ clk
+
+
+
+
+
+ java.lang.String
+ clk
+ false
+ true
+ true
+ true
+
+
+ com.altera.sopcmodel.reset.Reset$Edges
+ DEASSERT
+ false
+ true
+ true
+ true
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+ reset
+ false
+
+ reset_n
+ Input
+ 1
+ reset_n
+
+
+
+
+
+ embeddedsw.configuration.isFlash
+ 0
+
+
+ embeddedsw.configuration.isMemoryDevice
+ 0
+
+
+ embeddedsw.configuration.isNonVolatileStorage
+ 0
+
+
+ embeddedsw.configuration.isPrintableDevice
+ 0
+
+
+ embeddedsw.configuration.isTimerDevice
+ 1
+
+
+ com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment
+ NATIVE
+ false
+ true
+ false
+ true
+
+
+ int
+ 0
+ false
+ true
+ false
+ true
+
+
+ java.math.BigInteger
+ 8
+ true
+ true
+ false
+ true
+
+
+ com.altera.sopcmodel.avalon.EAddrBurstUnits
+ WORDS
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ java.lang.String
+ clk
+ false
+ true
+ true
+ true
+
+
+ java.lang.String
+ reset
+ false
+ true
+ true
+ true
+
+
+ int
+ 8
+ false
+ true
+ true
+ true
+
+
+ java.math.BigInteger
+
+ false
+ true
+ false
+ true
+
+
+ com.altera.entityinterfaces.IConnectionPoint
+
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+
+ com.altera.sopcmodel.avalon.EAddrBurstUnits
+ WORDS
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ java.math.BigInteger
+ 0
+ false
+ true
+ true
+ true
+
+
+ int
+ 0
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+
+ int
+ 0
+ false
+ false
+ true
+ true
+
+
+ int
+ 0
+ false
+ false
+ true
+ true
+
+
+ int
+ 1
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ int
+ 0
+ false
+ true
+ true
+ true
+
+
+ int
+ 1
+ false
+ true
+ false
+ true
+
+
+ int
+ 1
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ int
+ 0
+ false
+ true
+ true
+ true
+
+
+ com.altera.sopcmodel.avalon.TimingUnits
+ Cycles
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ boolean
+ false
+ false
+ true
+ false
+ true
+
+
+ int
+ 0
+ false
+ true
+ false
+ true
+
+
+ int
+ 0
+ false
+ true
+ false
+ true
+
+
+ int
+ 0
+ false
+ true
+ true
+ true
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+ avalon
+ false
+
+ address
+ Input
+ 3
+ address
+
+
+ writedata
+ Input
+ 16
+ writedata
+
+
+ readdata
+ Output
+ 16
+ readdata
+
+
+ chipselect
+ Input
+ 1
+ chipselect
+
+
+ write_n
+ Input
+ 1
+ write_n
+
+
+
+
+
+ com.altera.entityinterfaces.IConnectionPoint
+ timer_0.s1
+ false
+ true
+ true
+ true
+
+
+ java.lang.String
+ clk
+ false
+ true
+ false
+ true
+
+
+ java.lang.String
+ reset
+ false
+ true
+ false
+ true
+
+
+ java.lang.Integer
+
+ false
+ true
+ true
+ true
+
+
+ com.altera.entityinterfaces.IConnectionPoint
+
+ false
+ true
+ true
+ true
+
+
+ com.altera.sopcmodel.interrupt.InterruptConnectionPoint$EIrqScheme
+ NONE
+ false
+ true
+ false
+ true
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+ interrupt
+ false
+
+ irq
+ Output
+ 1
+ irq
+
+
+
java.math.BigInteger
- 0x008214a0
+ 0x008210e0
false
true
true
@@ -12951,57 +14033,6 @@ parameters are a RESULT of the module parameters. -->
jtag_uart_0
avalon_jtag_slave
-
-
- int
- 1
- false
- true
- true
- true
-
-
- java.math.BigInteger
- 0x00821000
- false
- true
- true
- true
-
-
- boolean
- false
- false
- true
- true
- true
-
-
- java.lang.String
- UNKNOWN
- false
- true
- true
- true
-
-
- boolean
- false
- false
- true
- true
- true
-
- nios2_qsys_0
- data_master
- Altera_UP_SD_Card_Avalon_Interface_0
- avalon_sdcard_slave
-
java.math.BigInteger
- 0x00821420
+ 0x00821060
false
true
true
@@ -13069,7 +14100,7 @@ parameters are a RESULT of the module parameters. -->
java.math.BigInteger
- 0x00821400
+ 0x00821040
false
true
true
@@ -13273,7 +14304,7 @@ parameters are a RESULT of the module parameters. -->
java.math.BigInteger
- 0x00821490
+ 0x008210d0
false
true
true
@@ -13324,7 +14355,7 @@ parameters are a RESULT of the module parameters. -->
java.math.BigInteger
- 0x00821480
+ 0x008210c0
false
true
true
@@ -13375,7 +14406,7 @@ parameters are a RESULT of the module parameters. -->
java.math.BigInteger
- 0x00821470
+ 0x008210b0
false
true
true
@@ -13426,7 +14457,7 @@ parameters are a RESULT of the module parameters. -->
java.math.BigInteger
- 0x00821460
+ 0x008210a0
false
true
true
@@ -13477,7 +14508,7 @@ parameters are a RESULT of the module parameters. -->
java.math.BigInteger
- 0x00821450
+ 0x00821090
false
true
true
@@ -13528,7 +14559,7 @@ parameters are a RESULT of the module parameters. -->
java.math.BigInteger
- 0x00821440
+ 0x00821080
false
true
true
@@ -13563,6 +14594,108 @@ parameters are a RESULT of the module parameters. -->
pio_5
s1
+
+
+ int
+ 1
+ false
+ true
+ true
+ true
+
+
+ java.math.BigInteger
+ 0x00821020
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+ nios2_qsys_0
+ data_master
+ timer_0
+ s1
+
+
+
+ int
+ 1
+ false
+ true
+ true
+ true
+
+
+ java.math.BigInteger
+ 0x00821000
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+ nios2_qsys_0
+ data_master
+ spi_0
+ spi_control_port
+
pio_4
clk
-
-
- java.lang.String
- UNKNOWN
- false
- true
- true
- true
-
-
- boolean
- false
- false
- true
- true
- true
-
- clk_27
- clk
- Altera_UP_SD_Card_Avalon_Interface_0
- clk
-
pio_5
clk
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+ clk_27
+ clk
+ timer_0
+ clk
+
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+ clk_27
+ clk
+ spi_0
+ clk
+
end="i2c_opencores_0.interrupt_sender">
int
- 0
+ 3
false
true
true
@@ -14032,7 +15192,7 @@ parameters are a RESULT of the module parameters. -->
end="epcq_controller_0.interrupt_sender">
int
- 1
+ 2
false
true
true
@@ -14067,7 +15227,7 @@ parameters are a RESULT of the module parameters. -->
end="jtag_uart_0.irq">
int
- 2
+ 1
false
true
true
@@ -14094,6 +15254,76 @@ parameters are a RESULT of the module parameters. -->
jtag_uart_0
irq
+
+
+ int
+ 0
+ false
+ true
+ true
+ true
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+ nios2_qsys_0
+ irq
+ timer_0
+ irq
+
+
+
+ int
+ 4
+ false
+ true
+ true
+ true
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+ nios2_qsys_0
+ irq
+ spi_0
+ irq
+
pio_4
reset
-
-
- java.lang.String
- UNKNOWN
- false
- true
- true
- true
-
-
- boolean
- false
- false
- true
- true
- true
-
- clk_27
- clk_reset
- Altera_UP_SD_Card_Avalon_Interface_0
- reset
-
pio_5
reset
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+ clk_27
+ clk_reset
+ timer_0
+ reset
+
+
+
+ java.lang.String
+ UNKNOWN
+ false
+ true
+ true
+ true
+
+
+ boolean
+ false
+ false
+ true
+ true
+ true
+
+ clk_27
+ clk_reset
+ spi_0
+ reset
+
onchip_memory2_0
reset1
-
- 1
- Altera_UP_SD_Card_Avalon_Interface_mod
- com.altera.entityinterfaces.IElementClass
- com.altera.entityinterfaces.IModule
- SD Card Interface
- 15.1
-
-
- 13
- avalon_slave
- com.altera.entityinterfaces.IElementClass
- com.altera.entityinterfaces.IMutableConnectionPoint
- Avalon Memory Mapped Slave
- 15.1
-
-
- 12
- clock_sink
- com.altera.entityinterfaces.IElementClass
- com.altera.entityinterfaces.IMutableConnectionPoint
- Clock Input
- 15.1
-
-
- 12
- reset_sink
- com.altera.entityinterfaces.IElementClass
- com.altera.entityinterfaces.IMutableConnectionPoint
- Reset Input
- 15.1
-
-
- 8
- conduit_end
- com.altera.entityinterfaces.IElementClass
- com.altera.entityinterfaces.IMutableConnectionPoint
- Conduit
- 15.1
-
1
clock_source
@@ -14708,7 +15925,31 @@ parameters are a RESULT of the module parameters. -->
15.1
- 3
+ 13
+ clock_sink
+ com.altera.entityinterfaces.IElementClass
+ com.altera.entityinterfaces.IMutableConnectionPoint
+ Clock Input
+ 15.1
+
+
+ 13
+ reset_sink
+ com.altera.entityinterfaces.IElementClass
+ com.altera.entityinterfaces.IMutableConnectionPoint
+ Reset Input
+ 15.1
+
+
+ 14
+ avalon_slave
+ com.altera.entityinterfaces.IElementClass
+ com.altera.entityinterfaces.IMutableConnectionPoint
+ Avalon Memory Mapped Slave
+ 15.1
+
+
+ 5
interrupt_sender
com.altera.entityinterfaces.IElementClass
com.altera.entityinterfaces.IMutableConnectionPoint
@@ -14723,6 +15964,14 @@ parameters are a RESULT of the module parameters. -->
I2C Master (opencores.org)
13.0
+
+ 8
+ conduit_end
+ com.altera.entityinterfaces.IElementClass
+ com.altera.entityinterfaces.IMutableConnectionPoint
+ Conduit
+ 15.1
+
1
altera_avalon_jtag_uart
@@ -14820,7 +16069,23 @@ parameters are a RESULT of the module parameters. -->
15.1
- 15
+ 1
+ altera_avalon_spi
+ com.altera.entityinterfaces.IElementClass
+ com.altera.entityinterfaces.IModule
+ SPI (3 Wire Serial)
+ 15.1
+
+
+ 1
+ altera_avalon_timer
+ com.altera.entityinterfaces.IElementClass
+ com.altera.entityinterfaces.IModule
+ Interval Timer
+ 15.1
+
+
+ 16
avalon
com.altera.entityinterfaces.IElementClass
com.altera.entityinterfaces.IConnection
@@ -14828,7 +16093,7 @@ parameters are a RESULT of the module parameters. -->
15.1
- 12
+ 13
clock
com.altera.entityinterfaces.IElementClass
com.altera.entityinterfaces.IConnection
@@ -14836,7 +16101,7 @@ parameters are a RESULT of the module parameters. -->
15.1
- 3
+ 5
interrupt
com.altera.entityinterfaces.IElementClass
com.altera.entityinterfaces.IConnection
@@ -14852,7 +16117,7 @@ parameters are a RESULT of the module parameters. -->
15.1
- 12
+ 13
reset
com.altera.entityinterfaces.IElementClass
com.altera.entityinterfaces.IConnection