diff --git a/.gitignore b/.gitignore index d35ba51e12ebc314b5f6d61e095c368f7f2feec5..3b88ec77130670016f05cd84f17ecd38cfe6dba8 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,6 @@ otogame/ *.sopcinfo *.tcl~ .metadata/ +*.qdf +audio_test/ +RemoteSystemsTempFiles/ \ No newline at end of file diff --git a/Audio_Controller/Altera_UP_Audio_Bit_Counter.v b/Audio_Controller/Altera_UP_Audio_Bit_Counter.v new file mode 100644 index 0000000000000000000000000000000000000000..8ee3164bb05b9ba95735b87b79695912ee5d1f36 --- /dev/null +++ b/Audio_Controller/Altera_UP_Audio_Bit_Counter.v @@ -0,0 +1,110 @@ +/***************************************************************************** + * * + * Module: Altera_UP_Audio_Bit_Counter * + * Description: * + * This module counts which bits for serial audio transfers. The module * + * assume that the data format is I2S, as it is described in the audio * + * chip's datasheet. * + * * + *****************************************************************************/ + +module Altera_UP_Audio_Bit_Counter ( + // Inputs + clk, + reset, + + bit_clk_rising_edge, + bit_clk_falling_edge, + left_right_clk_rising_edge, + left_right_clk_falling_edge, + + // Bidirectionals + + // Outputs + counting +); + +/***************************************************************************** + * Parameter Declarations * + *****************************************************************************/ + +parameter BIT_COUNTER_INIT = 5'd31; + +/***************************************************************************** + * Port Declarations * + *****************************************************************************/ + +// Inputs +input clk; +input reset; + +input bit_clk_rising_edge; +input bit_clk_falling_edge; +input left_right_clk_rising_edge; +input left_right_clk_falling_edge; + +// Bidirectionals + +// Outputs +output reg counting; + +/***************************************************************************** + * Constant Declarations * + *****************************************************************************/ + + +/***************************************************************************** + * Internal wires and registers Declarations * + *****************************************************************************/ + +// Internal Wires +wire reset_bit_counter; + +// Internal Registers +reg [4:0] bit_counter; + +// State Machine Registers + + +/***************************************************************************** + * Finite State Machine(s) * + *****************************************************************************/ + + +/***************************************************************************** + * Sequential logic * + *****************************************************************************/ + +always @(posedge clk) +begin + if (reset == 1'b1) + bit_counter <= 5'h00; + else if (reset_bit_counter == 1'b1) + bit_counter <= BIT_COUNTER_INIT; + else if ((bit_clk_falling_edge == 1'b1) && (bit_counter != 5'h00)) + bit_counter <= bit_counter - 5'h01; +end + +always @(posedge clk) +begin + if (reset == 1'b1) + counting <= 1'b0; + else if (reset_bit_counter == 1'b1) + counting <= 1'b1; + else if ((bit_clk_falling_edge == 1'b1) && (bit_counter == 5'h00)) + counting <= 1'b0; +end + +/***************************************************************************** + * Combinational logic * + *****************************************************************************/ + +assign reset_bit_counter = left_right_clk_rising_edge | + left_right_clk_falling_edge; + +/***************************************************************************** + * Internal Modules * + *****************************************************************************/ + +endmodule + diff --git a/Audio_Controller/Altera_UP_Audio_In_Deserializer.v b/Audio_Controller/Altera_UP_Audio_In_Deserializer.v new file mode 100644 index 0000000000000000000000000000000000000000..de0a20dfb13ba580e251dab6aa85c6793980f875 --- /dev/null +++ b/Audio_Controller/Altera_UP_Audio_In_Deserializer.v @@ -0,0 +1,212 @@ +/***************************************************************************** + * * + * Module: Altera_UP_Audio_In_Deserializer * + * Description: * + * This module read data from the Audio ADC on the Altera DE2 board. * + * * + *****************************************************************************/ + +module Altera_UP_Audio_In_Deserializer ( + // Inputs + clk, + reset, + + bit_clk_rising_edge, + bit_clk_falling_edge, + left_right_clk_rising_edge, + left_right_clk_falling_edge, + + done_channel_sync, + + serial_audio_in_data, + + read_left_audio_data_en, + read_right_audio_data_en, + + // Bidirectionals + + // Outputs + left_audio_fifo_read_space, + right_audio_fifo_read_space, + + left_channel_data, + right_channel_data +); + +/***************************************************************************** + * Parameter Declarations * + *****************************************************************************/ + +parameter AUDIO_DATA_WIDTH = 32; +parameter BIT_COUNTER_INIT = 5'd31; + +/***************************************************************************** + * Port Declarations * + *****************************************************************************/ +// Inputs +input clk; +input reset; + +input bit_clk_rising_edge; +input bit_clk_falling_edge; +input left_right_clk_rising_edge; +input left_right_clk_falling_edge; + +input done_channel_sync; + +input serial_audio_in_data; + +input read_left_audio_data_en; +input read_right_audio_data_en; + +// Bidirectionals + +// Outputs +output reg [7:0] left_audio_fifo_read_space; +output reg [7:0] right_audio_fifo_read_space; + +output [AUDIO_DATA_WIDTH:1] left_channel_data; +output [AUDIO_DATA_WIDTH:1] right_channel_data; + +/***************************************************************************** + * Internal wires and registers Declarations * + *****************************************************************************/ +// Internal Wires +wire valid_audio_input; + +wire left_channel_fifo_is_empty; +wire right_channel_fifo_is_empty; + +wire left_channel_fifo_is_full; +wire right_channel_fifo_is_full; + +wire [6:0] left_channel_fifo_used; +wire [6:0] right_channel_fifo_used; + +// Internal Registers +reg [AUDIO_DATA_WIDTH:1] data_in_shift_reg; + +// State Machine Registers + + +/***************************************************************************** + * Finite State Machine(s) * + *****************************************************************************/ + + +/***************************************************************************** + * Sequential logic * + *****************************************************************************/ + +always @(posedge clk) +begin + if (reset == 1'b1) + left_audio_fifo_read_space <= 8'h00; + else + begin + left_audio_fifo_read_space[7] <= left_channel_fifo_is_full; + left_audio_fifo_read_space[6:0] <= left_channel_fifo_used; + end +end + +always @(posedge clk) +begin + if (reset == 1'b1) + right_audio_fifo_read_space <= 8'h00; + else + begin + right_audio_fifo_read_space[7] <= right_channel_fifo_is_full; + right_audio_fifo_read_space[6:0] <= right_channel_fifo_used; + end +end + + + + +always @(posedge clk) +begin + if (reset == 1'b1) + data_in_shift_reg <= {AUDIO_DATA_WIDTH{1'b0}}; + else if (bit_clk_rising_edge & valid_audio_input) + data_in_shift_reg <= + {data_in_shift_reg[(AUDIO_DATA_WIDTH - 1):1], + serial_audio_in_data}; +end + +/***************************************************************************** + * Combinational logic * + *****************************************************************************/ + + +/***************************************************************************** + * Internal Modules * + *****************************************************************************/ + +Altera_UP_Audio_Bit_Counter Audio_Out_Bit_Counter ( + // Inputs + .clk (clk), + .reset (reset), + + .bit_clk_rising_edge (bit_clk_rising_edge), + .bit_clk_falling_edge (bit_clk_falling_edge), + .left_right_clk_rising_edge (left_right_clk_rising_edge), + .left_right_clk_falling_edge (left_right_clk_falling_edge), + + // Bidirectionals + + // Outputs + .counting (valid_audio_input) +); +defparam + Audio_Out_Bit_Counter.BIT_COUNTER_INIT = BIT_COUNTER_INIT; + +Altera_UP_SYNC_FIFO Audio_In_Left_Channel_FIFO( + // Inputs + .clk (clk), + .reset (reset), + + .write_en (left_right_clk_falling_edge & ~left_channel_fifo_is_full & done_channel_sync), + .write_data (data_in_shift_reg), + + .read_en (read_left_audio_data_en & ~left_channel_fifo_is_empty), + + // Bidirectionals + + // Outputs + .fifo_is_empty (left_channel_fifo_is_empty), + .fifo_is_full (left_channel_fifo_is_full), + .words_used (left_channel_fifo_used), + + .read_data (left_channel_data) +); +defparam + Audio_In_Left_Channel_FIFO.DATA_WIDTH = AUDIO_DATA_WIDTH, + Audio_In_Left_Channel_FIFO.DATA_DEPTH = 128, + Audio_In_Left_Channel_FIFO.ADDR_WIDTH = 7; + +Altera_UP_SYNC_FIFO Audio_In_Right_Channel_FIFO( + // Inputs + .clk (clk), + .reset (reset), + + .write_en (left_right_clk_rising_edge & ~right_channel_fifo_is_full & done_channel_sync), + .write_data (data_in_shift_reg), + + .read_en (read_right_audio_data_en & ~right_channel_fifo_is_empty), + + // Bidirectionals + + // Outputs + .fifo_is_empty (right_channel_fifo_is_empty), + .fifo_is_full (right_channel_fifo_is_full), + .words_used (right_channel_fifo_used), + + .read_data (right_channel_data) +); +defparam + Audio_In_Right_Channel_FIFO.DATA_WIDTH = AUDIO_DATA_WIDTH, + Audio_In_Right_Channel_FIFO.DATA_DEPTH = 128, + Audio_In_Right_Channel_FIFO.ADDR_WIDTH = 7; + +endmodule + diff --git a/Audio_Controller/Altera_UP_Audio_Out_Serializer.v b/Audio_Controller/Altera_UP_Audio_Out_Serializer.v new file mode 100644 index 0000000000000000000000000000000000000000..9545ad9374c4fb046f8836fc92efd3d9e57f65e8 --- /dev/null +++ b/Audio_Controller/Altera_UP_Audio_Out_Serializer.v @@ -0,0 +1,217 @@ +/***************************************************************************** + * * + * Module: Altera_UP_Audio_Out_Serializer * + * Description: * + * This module writes data to the Audio DAC on the Altera DE2 board. * + * * + *****************************************************************************/ + +module Altera_UP_Audio_Out_Serializer ( + // Inputs + clk, + reset, + + bit_clk_rising_edge, + bit_clk_falling_edge, + left_right_clk_rising_edge, + left_right_clk_falling_edge, + + left_channel_data, + left_channel_data_en, + + right_channel_data, + right_channel_data_en, + + // Bidirectionals + + // Outputs + left_channel_fifo_write_space, + right_channel_fifo_write_space, + + serial_audio_out_data +); + +/***************************************************************************** + * Parameter Declarations * + *****************************************************************************/ + +parameter AUDIO_DATA_WIDTH = 32; + +/***************************************************************************** + * Port Declarations * + *****************************************************************************/ +// Inputs +input clk; +input reset; + +input bit_clk_rising_edge; +input bit_clk_falling_edge; +input left_right_clk_rising_edge; +input left_right_clk_falling_edge; + +input [AUDIO_DATA_WIDTH:1] left_channel_data; +input left_channel_data_en; + +input [AUDIO_DATA_WIDTH:1] right_channel_data; +input right_channel_data_en; + +// Bidirectionals + +// Outputs +output reg [7:0] left_channel_fifo_write_space; +output reg [7:0] right_channel_fifo_write_space; + +output reg serial_audio_out_data; + + +/***************************************************************************** + * Internal wires and registers Declarations * + *****************************************************************************/ + +// Internal Wires +wire read_left_channel; +wire read_right_channel; + +wire left_channel_fifo_is_empty; +wire right_channel_fifo_is_empty; + +wire left_channel_fifo_is_full; +wire right_channel_fifo_is_full; + +wire [6:0] left_channel_fifo_used; +wire [6:0] right_channel_fifo_used; + +wire [AUDIO_DATA_WIDTH:1] left_channel_from_fifo; +wire [AUDIO_DATA_WIDTH:1] right_channel_from_fifo; + +// Internal Registers +reg left_channel_was_read; +reg [AUDIO_DATA_WIDTH:1] data_out_shift_reg; + +// State Machine Registers + +/***************************************************************************** + * Finite State Machine(s) * + *****************************************************************************/ + + +/***************************************************************************** + * Sequential logic * + *****************************************************************************/ + +always @(posedge clk) +begin + if (reset == 1'b1) + left_channel_fifo_write_space <= 8'h00; + else + left_channel_fifo_write_space <= 8'h80 - {left_channel_fifo_is_full,left_channel_fifo_used}; +end + +always @(posedge clk) +begin + if (reset == 1'b1) + right_channel_fifo_write_space <= 8'h00; + else + right_channel_fifo_write_space <= 8'h80 - {right_channel_fifo_is_full,right_channel_fifo_used}; +end + + +always @(posedge clk) +begin + if (reset == 1'b1) + serial_audio_out_data <= 1'b0; + else + serial_audio_out_data <= data_out_shift_reg[AUDIO_DATA_WIDTH]; +end + + +always @(posedge clk) +begin + if (reset == 1'b1) + left_channel_was_read <= 1'b0; + else if (read_left_channel) + left_channel_was_read <=1'b1; + else if (read_right_channel) + left_channel_was_read <=1'b0; +end + + +always @(posedge clk) +begin + if (reset == 1'b1) + data_out_shift_reg <= {AUDIO_DATA_WIDTH{1'b0}}; + else if (read_left_channel) + data_out_shift_reg <= left_channel_from_fifo; + else if (read_right_channel) + data_out_shift_reg <= right_channel_from_fifo; + else if (left_right_clk_rising_edge | left_right_clk_falling_edge) + data_out_shift_reg <= {AUDIO_DATA_WIDTH{1'b0}}; + else if (bit_clk_falling_edge) + data_out_shift_reg <= + {data_out_shift_reg[(AUDIO_DATA_WIDTH - 1):1], 1'b0}; +end + +/***************************************************************************** + * Combinational logic * + *****************************************************************************/ + +assign read_left_channel = left_right_clk_rising_edge & + ~left_channel_fifo_is_empty & + ~right_channel_fifo_is_empty; +assign read_right_channel = left_right_clk_falling_edge & + left_channel_was_read; + +/***************************************************************************** + * Internal Modules * + *****************************************************************************/ + +Altera_UP_SYNC_FIFO Audio_Out_Left_Channel_FIFO( + // Inputs + .clk (clk), + .reset (reset), + + .write_en (left_channel_data_en & ~left_channel_fifo_is_full), + .write_data (left_channel_data), + + .read_en (read_left_channel), + + // Bidirectionals + + // Outputs + .fifo_is_empty (left_channel_fifo_is_empty), + .fifo_is_full (left_channel_fifo_is_full), + .words_used (left_channel_fifo_used), + + .read_data (left_channel_from_fifo) +); +defparam + Audio_Out_Left_Channel_FIFO.DATA_WIDTH = AUDIO_DATA_WIDTH, + Audio_Out_Left_Channel_FIFO.DATA_DEPTH = 128, + Audio_Out_Left_Channel_FIFO.ADDR_WIDTH = 7; + +Altera_UP_SYNC_FIFO Audio_Out_Right_Channel_FIFO( + // Inputs + .clk (clk), + .reset (reset), + + .write_en (right_channel_data_en & ~right_channel_fifo_is_full), + .write_data (right_channel_data), + + .read_en (read_right_channel), + + // Bidirectionals + + // Outputs + .fifo_is_empty (right_channel_fifo_is_empty), + .fifo_is_full (right_channel_fifo_is_full), + .words_used (right_channel_fifo_used), + + .read_data (right_channel_from_fifo) +); +defparam + Audio_Out_Right_Channel_FIFO.DATA_WIDTH = AUDIO_DATA_WIDTH, + Audio_Out_Right_Channel_FIFO.DATA_DEPTH = 128, + Audio_Out_Right_Channel_FIFO.ADDR_WIDTH = 7; + +endmodule + diff --git a/Audio_Controller/Altera_UP_Clock_Edge.v b/Audio_Controller/Altera_UP_Clock_Edge.v new file mode 100644 index 0000000000000000000000000000000000000000..aaa4aa87d1b4e098461e90be117da30258d63978 --- /dev/null +++ b/Audio_Controller/Altera_UP_Clock_Edge.v @@ -0,0 +1,93 @@ +/***************************************************************************** + * * + * Module: Altera_UP_Clock_Edge * + * Description: * + * This module finds clock edges of one clock at the frquency of * + * another clock. * + * * + *****************************************************************************/ + +module Altera_UP_Clock_Edge ( + // Inputs + clk, + reset, + + test_clk, + + // Bidirectionals + + // Outputs + rising_edge, + falling_edge +); + +/***************************************************************************** + * Parameter Declarations * + *****************************************************************************/ + + +/***************************************************************************** + * Port Declarations * + *****************************************************************************/ + +// Inputs +input clk; +input reset; + +input test_clk; + +// Bidirectionals + +// Outputs +output rising_edge; +output falling_edge; + +/***************************************************************************** + * Constant Declarations * + *****************************************************************************/ + +/***************************************************************************** + * Internal wires and registers Declarations * + *****************************************************************************/ + +// Internal Wires +wire found_edge; + +// Internal Registers +reg cur_test_clk; +reg last_test_clk; + +// State Machine Registers + +/***************************************************************************** + * Finite State Machine(s) * + *****************************************************************************/ + + +/***************************************************************************** + * Sequential logic * + *****************************************************************************/ + +always @(posedge clk) + cur_test_clk <= test_clk; + +always @(posedge clk) + last_test_clk <= cur_test_clk; + +/***************************************************************************** + * Combinational logic * + *****************************************************************************/ + +// Output Assignments +assign rising_edge = found_edge & cur_test_clk; +assign falling_edge = found_edge & last_test_clk; + +// Internal Assignments +assign found_edge = last_test_clk ^ cur_test_clk; + +/***************************************************************************** + * Internal Modules * + *****************************************************************************/ + +endmodule + diff --git a/Audio_Controller/Altera_UP_SYNC_FIFO.v b/Audio_Controller/Altera_UP_SYNC_FIFO.v new file mode 100644 index 0000000000000000000000000000000000000000..acbc5c98bb109a2ec42c16d0bf9b4d03b1186627 --- /dev/null +++ b/Audio_Controller/Altera_UP_SYNC_FIFO.v @@ -0,0 +1,129 @@ +/***************************************************************************** + * * + * Module: Altera_UP_SYNC_FIFO * + * Description: * + * This module is a FIFO with same clock for both reads and writes. * + * * + *****************************************************************************/ + +module Altera_UP_SYNC_FIFO ( + // Inputs + clk, + reset, + + write_en, + write_data, + + read_en, + + // Bidirectionals + + // Outputs + fifo_is_empty, + fifo_is_full, + words_used, + + read_data +); + +/***************************************************************************** + * Parameter Declarations * + *****************************************************************************/ + +parameter DATA_WIDTH = 32; +parameter DATA_DEPTH = 128; +parameter ADDR_WIDTH = 7; + +/***************************************************************************** + * Port Declarations * + *****************************************************************************/ + +// Inputs +input clk; +input reset; + +input write_en; +input [DATA_WIDTH:1] write_data; + +input read_en; + +// Bidirectionals + +// Outputs +output fifo_is_empty; +output fifo_is_full; +output [ADDR_WIDTH:1] words_used; + +output [DATA_WIDTH:1] read_data; + +/***************************************************************************** + * Internal wires and registers Declarations * + *****************************************************************************/ + +// Internal Wires + +// Internal Registers + +// State Machine Registers + +/***************************************************************************** + * Finite State Machine(s) * + *****************************************************************************/ + + +/***************************************************************************** + * Sequential logic * + *****************************************************************************/ + + +/***************************************************************************** + * Combinational logic * + *****************************************************************************/ + + +/***************************************************************************** + * Internal Modules * + *****************************************************************************/ + + +scfifo Sync_FIFO ( + // Inputs + .clock (clk), + .sclr (reset), + + .data (write_data), + .wrreq (write_en), + + .rdreq (read_en), + + // Bidirectionals + + // Outputs + .empty (fifo_is_empty), + .full (fifo_is_full), + .usedw (words_used), + + .q (read_data) + + // Unused + // synopsys translate_off + , + .aclr (), + .almost_empty (), + .almost_full () + // synopsys translate_on +); +defparam + Sync_FIFO.add_ram_output_register = "OFF", + Sync_FIFO.intended_device_family = "Cyclone II", + Sync_FIFO.lpm_numwords = DATA_DEPTH, + Sync_FIFO.lpm_showahead = "ON", + Sync_FIFO.lpm_type = "scfifo", + Sync_FIFO.lpm_width = DATA_WIDTH, + Sync_FIFO.lpm_widthu = ADDR_WIDTH, + Sync_FIFO.overflow_checking = "OFF", + Sync_FIFO.underflow_checking = "OFF", + Sync_FIFO.use_eab = "ON"; + +endmodule + diff --git a/Audio_Controller/Audio_Clock.v b/Audio_Controller/Audio_Clock.v new file mode 100644 index 0000000000000000000000000000000000000000..f5f582fefcef077896cb8aaa5763826cc4a45e80 --- /dev/null +++ b/Audio_Controller/Audio_Clock.v @@ -0,0 +1,312 @@ +// megafunction wizard: %ALTPLL% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: altpll + +// ============================================================ +// File Name: Audio_Clock.v +// Megafunction Name(s): +// altpll +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 7.2 Build 151 09/26/2007 SJ Full Version +// ************************************************************ + + +//Copyright (C) 1991-2007 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module Audio_Clock ( + areset, + inclk0, + c0, + locked); + + input areset; + input inclk0; + output c0; + output locked; + + wire [5:0] sub_wire0; + wire sub_wire2; + wire [0:0] sub_wire5 = 1'h0; + wire [0:0] sub_wire1 = sub_wire0[0:0]; + wire c0 = sub_wire1; + wire locked = sub_wire2; + wire sub_wire3 = inclk0; + wire [1:0] sub_wire4 = {sub_wire5, sub_wire3}; + + altpll altpll_component ( + .inclk (sub_wire4), + .areset (areset), + .clk (sub_wire0), + .locked (sub_wire2), + .activeclock (), + .clkbad (), + .clkena ({6{1'b1}}), + .clkloss (), + .clkswitch (1'b0), + .configupdate (1'b0), + .enable0 (), + .enable1 (), + .extclk (), + .extclkena ({4{1'b1}}), + .fbin (1'b1), + .fbmimicbidir (), + .fbout (), + .pfdena (1'b1), + .phasecounterselect ({4{1'b1}}), + .phasedone (), + .phasestep (1'b1), + .phaseupdown (1'b1), + .pllena (1'b1), + .scanaclr (1'b0), + .scanclk (1'b0), + .scanclkena (1'b1), + .scandata (1'b0), + .scandataout (), + .scandone (), + .scanread (1'b0), + .scanwrite (1'b0), + .sclkout0 (), + .sclkout1 (), + .vcooverrange (), + .vcounderrange ()); + defparam + altpll_component.clk0_divide_by = 4, + altpll_component.clk0_duty_cycle = 50, + altpll_component.clk0_multiply_by = 1, + altpll_component.clk0_phase_shift = "0", + altpll_component.compensate_clock = "CLK0", + altpll_component.gate_lock_signal = "NO", + altpll_component.inclk0_input_frequency = 20000, + altpll_component.intended_device_family = "Cyclone II", + altpll_component.invalid_lock_multiplier = 5, + altpll_component.lpm_hint = "CBX_MODULE_PREFIX=Audio_Clock", + altpll_component.lpm_type = "altpll", + altpll_component.operation_mode = "NORMAL", + altpll_component.port_activeclock = "PORT_UNUSED", + altpll_component.port_areset = "PORT_USED", + altpll_component.port_clkbad0 = "PORT_UNUSED", + altpll_component.port_clkbad1 = "PORT_UNUSED", + altpll_component.port_clkloss = "PORT_UNUSED", + altpll_component.port_clkswitch = "PORT_UNUSED", + altpll_component.port_configupdate = "PORT_UNUSED", + altpll_component.port_fbin = "PORT_UNUSED", + altpll_component.port_inclk0 = "PORT_USED", + altpll_component.port_inclk1 = "PORT_UNUSED", + altpll_component.port_locked = "PORT_USED", + altpll_component.port_pfdena = "PORT_UNUSED", + altpll_component.port_phasecounterselect = "PORT_UNUSED", + altpll_component.port_phasedone = "PORT_UNUSED", + altpll_component.port_phasestep = "PORT_UNUSED", + altpll_component.port_phaseupdown = "PORT_UNUSED", + altpll_component.port_pllena = "PORT_UNUSED", + altpll_component.port_scanaclr = "PORT_UNUSED", + altpll_component.port_scanclk = "PORT_UNUSED", + altpll_component.port_scanclkena = "PORT_UNUSED", + altpll_component.port_scandata = "PORT_UNUSED", + altpll_component.port_scandataout = "PORT_UNUSED", + altpll_component.port_scandone = "PORT_UNUSED", + altpll_component.port_scanread = "PORT_UNUSED", + altpll_component.port_scanwrite = "PORT_UNUSED", + altpll_component.port_clk0 = "PORT_USED", + altpll_component.port_clk1 = "PORT_UNUSED", + altpll_component.port_clk2 = "PORT_UNUSED", + altpll_component.port_clk3 = "PORT_UNUSED", + altpll_component.port_clk4 = "PORT_UNUSED", + altpll_component.port_clk5 = "PORT_UNUSED", + altpll_component.port_clkena0 = "PORT_UNUSED", + altpll_component.port_clkena1 = "PORT_UNUSED", + altpll_component.port_clkena2 = "PORT_UNUSED", + altpll_component.port_clkena3 = "PORT_UNUSED", + altpll_component.port_clkena4 = "PORT_UNUSED", + altpll_component.port_clkena5 = "PORT_UNUSED", + altpll_component.port_extclk0 = "PORT_UNUSED", + altpll_component.port_extclk1 = "PORT_UNUSED", + altpll_component.port_extclk2 = "PORT_UNUSED", + altpll_component.port_extclk3 = "PORT_UNUSED", + altpll_component.valid_lock_multiplier = 1; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +// Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +// Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +// Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +// Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +// Retrieval info: PRIVATE: BANDWIDTH_USE_CUSTOM STRING "0" +// Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +// Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "1" +// Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +// Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +// Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +// Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +// Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "e0" +// Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "6" +// Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "4" +// Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +// Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +// Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +// Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +// Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +// Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +// Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "50.000" +// Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone II" +// Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +// Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +// Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +// Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "1" +// Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" +// Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "100.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +// Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1" +// Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +// Retrieval info: PRIVATE: PLL_ENA_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +// Retrieval info: PRIVATE: RECONFIG_FILE STRING "Audio_Clock.mif" +// Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +// Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +// Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +// Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +// Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +// Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +// Retrieval info: PRIVATE: SPREAD_USE STRING "0" +// Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +// Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +// Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +// Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: USE_CLK0 STRING "1" +// Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +// Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +// Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "4" +// Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "1" +// Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +// Retrieval info: CONSTANT: GATE_LOCK_SIGNAL STRING "NO" +// Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "20000" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II" +// Retrieval info: CONSTANT: INVALID_LOCK_MULTIPLIER NUMERIC "5" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +// Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL" +// Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: VALID_LOCK_MULTIPLIER NUMERIC "1" +// Retrieval info: USED_PORT: @clk 0 0 6 0 OUTPUT_CLK_EXT VCC "@clk[5..0]" +// Retrieval info: USED_PORT: @extclk 0 0 4 0 OUTPUT_CLK_EXT VCC "@extclk[3..0]" +// Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset" +// Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +// Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +// Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +// Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +// Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +// Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +// Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +// Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL Audio_Clock.v TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL Audio_Clock.ppf TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL Audio_Clock.inc FALSE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL Audio_Clock.cmp FALSE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL Audio_Clock.bsf FALSE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL Audio_Clock_inst.v FALSE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL Audio_Clock_bb.v TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL Audio_Clock_waveforms.html TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL Audio_Clock_wave*.jpg FALSE FALSE +// Retrieval info: LIB_FILE: altera_mf +// Retrieval info: CBX_MODULE_PREFIX: ON diff --git a/Audio_Controller/Audio_Controller.v b/Audio_Controller/Audio_Controller.v new file mode 100644 index 0000000000000000000000000000000000000000..db6f27f3297d45fda54db50ea4a1b2b26f4fd4df --- /dev/null +++ b/Audio_Controller/Audio_Controller.v @@ -0,0 +1,280 @@ +/***************************************************************************** + * * + * Module: Altera_UP_Avalon_Audio * + * Description: * + * This module reads and writes data to the Audio chip on Altera's DE2 * + * Development and Education Board. The audio chip must be in master mode * + * and the digital format must be left justified. * + * * + *****************************************************************************/ + +module Audio_Controller( + // Inputs + CLOCK_50, + reset, + + clear_audio_in_memory, + read_audio_in, + + clear_audio_out_memory, + left_channel_audio_out, + right_channel_audio_out, + write_audio_out, + + AUD_ADCDAT, + + // Bidirectionals + AUD_BCLK, + AUD_ADCLRCK, + AUD_DACLRCK, + + // Outputs + left_channel_audio_in, + right_channel_audio_in, + audio_in_available, + + audio_out_allowed, + + AUD_XCK, + AUD_DACDAT +); + +/***************************************************************************** + * Parameter Declarations * + *****************************************************************************/ + +localparam AUDIO_DATA_WIDTH = 32; +localparam BIT_COUNTER_INIT = 5'd31; + +/***************************************************************************** + * Port Declarations * + *****************************************************************************/ +// Inputs +input CLOCK_50; +input reset; + +input clear_audio_in_memory; +input read_audio_in; + +input clear_audio_out_memory; +input [AUDIO_DATA_WIDTH:1] left_channel_audio_out; +input [AUDIO_DATA_WIDTH:1] right_channel_audio_out; +input write_audio_out; + +input AUD_ADCDAT; + +// Bidirectionals +inout AUD_BCLK; +inout AUD_ADCLRCK; +inout AUD_DACLRCK; + +// Outputs +output reg audio_in_available; +output [AUDIO_DATA_WIDTH:1] left_channel_audio_in; +output [AUDIO_DATA_WIDTH:1] right_channel_audio_in; + +output reg audio_out_allowed; + +output AUD_XCK; +output AUD_DACDAT; + +/***************************************************************************** + * Internal wires and registers Declarations * + *****************************************************************************/ + +// Internal Wires +wire bclk_rising_edge; +wire bclk_falling_edge; + +wire adc_lrclk_rising_edge; +wire adc_lrclk_falling_edge; + +wire dac_lrclk_rising_edge; +wire dac_lrclk_falling_edge; + +wire [7:0] left_channel_read_available; +wire [7:0] right_channel_read_available; + +wire [7:0] left_channel_write_space; +wire [7:0] right_channel_write_space; + +// Internal Registers +reg done_adc_channel_sync; +reg done_dac_channel_sync; + +// State Machine Registers + + +/***************************************************************************** + * Finite State Machine(s) * + *****************************************************************************/ + + +/***************************************************************************** + * Sequential logic * + *****************************************************************************/ + +// Output Registers +always @ (posedge CLOCK_50) +begin + if (reset == 1'b1) + audio_in_available <= 1'b0; + else if ((left_channel_read_available[7] | left_channel_read_available[6]) + & (right_channel_read_available[7] | right_channel_read_available[6])) + audio_in_available <= 1'b1; + else + audio_in_available <= 1'b0; +end + +always @ (posedge CLOCK_50) +begin + if (reset == 1'b1) + audio_out_allowed <= 1'b0; + else if ((left_channel_write_space[7] | left_channel_write_space[6]) + & (right_channel_write_space[7] | right_channel_write_space[6])) + audio_out_allowed <= 1'b1; + else + audio_out_allowed <= 1'b0; +end + +// Internal Registers +always @ (posedge CLOCK_50) +begin + if (reset == 1'b1) + done_adc_channel_sync <= 1'b0; + else if (adc_lrclk_rising_edge == 1'b1) + done_adc_channel_sync <= 1'b1; +end + +always @ (posedge CLOCK_50) +begin + if (reset == 1'b1) + done_dac_channel_sync <= 1'b0; + else if (dac_lrclk_falling_edge == 1'b1) + done_dac_channel_sync <= 1'b1; +end + +/***************************************************************************** + * Combinational logic * + *****************************************************************************/ + +assign AUD_BCLK = 1'bZ; +assign AUD_ADCLRCK = 1'bZ; +assign AUD_DACLRCK = 1'bZ; + + +/***************************************************************************** + * Internal Modules * + *****************************************************************************/ + +Altera_UP_Clock_Edge Bit_Clock_Edges ( + // Inputs + .clk (CLOCK_50), + .reset (reset), + + .test_clk (AUD_BCLK), + + // Bidirectionals + + // Outputs + .rising_edge (bclk_rising_edge), + .falling_edge (bclk_falling_edge) +); + +Altera_UP_Clock_Edge ADC_Left_Right_Clock_Edges ( + // Inputs + .clk (CLOCK_50), + .reset (reset), + + .test_clk (AUD_ADCLRCK), + + // Bidirectionals + + // Outputs + .rising_edge (adc_lrclk_rising_edge), + .falling_edge (adc_lrclk_falling_edge) +); + +Altera_UP_Clock_Edge DAC_Left_Right_Clock_Edges ( + // Inputs + .clk (CLOCK_50), + .reset (reset), + + .test_clk (AUD_DACLRCK), + + // Bidirectionals + + // Outputs + .rising_edge (dac_lrclk_rising_edge), + .falling_edge (dac_lrclk_falling_edge) +); + +Altera_UP_Audio_In_Deserializer Audio_In_Deserializer ( + // Inputs + .clk (CLOCK_50), + .reset (reset | clear_audio_in_memory), + + .bit_clk_rising_edge (bclk_rising_edge), + .bit_clk_falling_edge (bclk_falling_edge), + .left_right_clk_rising_edge (adc_lrclk_rising_edge), + .left_right_clk_falling_edge (adc_lrclk_falling_edge), + + .done_channel_sync (done_adc_channel_sync), + + .serial_audio_in_data (AUD_ADCDAT), + + .read_left_audio_data_en (read_audio_in & audio_in_available), + .read_right_audio_data_en (read_audio_in & audio_in_available), + + // Bidirectionals + + // Outputs + .left_audio_fifo_read_space (left_channel_read_available), + .right_audio_fifo_read_space (right_channel_read_available), + + .left_channel_data (left_channel_audio_in), + .right_channel_data (right_channel_audio_in) +); +defparam + Audio_In_Deserializer.AUDIO_DATA_WIDTH = AUDIO_DATA_WIDTH, + Audio_In_Deserializer.BIT_COUNTER_INIT = BIT_COUNTER_INIT; + +Altera_UP_Audio_Out_Serializer Audio_Out_Serializer ( + // Inputs + .clk (CLOCK_50), + .reset (reset | clear_audio_out_memory), + + .bit_clk_rising_edge (bclk_rising_edge), + .bit_clk_falling_edge (bclk_falling_edge), + .left_right_clk_rising_edge (done_dac_channel_sync & dac_lrclk_rising_edge), + .left_right_clk_falling_edge (done_dac_channel_sync & dac_lrclk_falling_edge), + + .left_channel_data (left_channel_audio_out), + .left_channel_data_en (write_audio_out & audio_out_allowed), + + .right_channel_data (right_channel_audio_out), + .right_channel_data_en (write_audio_out & audio_out_allowed), + + // Bidirectionals + + // Outputs + .left_channel_fifo_write_space (left_channel_write_space), + .right_channel_fifo_write_space (right_channel_write_space), + + .serial_audio_out_data (AUD_DACDAT) +); +defparam + Audio_Out_Serializer.AUDIO_DATA_WIDTH = AUDIO_DATA_WIDTH; + +Audio_Clock Audio_Clock ( + // Inputs + .inclk0 (CLOCK_50), + .areset (), + + // Outputs + .c0 (AUD_XCK), + .locked () +); + +endmodule + diff --git a/audio.sv b/audio.sv new file mode 100644 index 0000000000000000000000000000000000000000..5c9a66b963b8881fa22012c3611dc86f1e6ef02f --- /dev/null +++ b/audio.sv @@ -0,0 +1,123 @@ +module audio( + input logic CLK,RESET, + + input logic [1:0]AVL_ADDR, + input logic AVL_CS, + input logic AVL_RD,AVL_WR, + input logic [31:0] AVL_WDATA, + output logic [31:0] AVL_RDATA, + + output logic AUD_MCLK, + AUD_DACDAT, + + I2C_SCLK, + + input logic AUD_ADCDAT, + + + inout wire AUD_BCLK, + AUD_ADCLRCK, + AUD_DACLRCK, + I2C_SDAT, + + output logic [15:0] LEDR +); + + + +logic INIT_FINISH,audio_out_allowed,write_audio_out, write_audio_out_next; + +logic [31:0] data [2], data_next[2]; + +//logic audio_ready,audio_ready_next; + +//logic audio_out_allowed; +assign LEDR = data[0][31:16]; + +always_ff @(negedge CLK) begin + if(RESET) begin + data[0] <= 32'h0; + data[1] <= 32'h0; + write_audio_out <= 0; + end else begin + data[0] <= data_next[0]; + data[1] <= data_next[1]; + write_audio_out <= write_audio_out_next; + end +end + +always_comb begin + //audio_ready_next = audio_ready; + data_next[0] = data[0]; + data_next[1] = data[1]; + //INIT = 1'b0; + AVL_RDATA = 31'hCCCC; + write_audio_out_next = 1'b0; + + if (AVL_WR && AVL_CS) begin + if (AVL_ADDR == 2'b00) begin + data_next[0] = AVL_WDATA; + end + if (AVL_ADDR == 2'b01) begin + data_next[1] = AVL_WDATA; + end + // else if (AVL_ADDR == 2'b10) + write_audio_out_next = 1'b1; + end + + + if (AVL_RD && AVL_CS) begin + if (AVL_ADDR == 2'b00) begin + AVL_RDATA = data[0]; + end + if (AVL_ADDR == 2'b11) + AVL_RDATA = {31'h0,audio_out_allowed}; + end + +// if (audio_out_allowed) begin +// audio_ready_next = 1'b1; +// end else +// audio_ready_next = 1'b0; +end + + +Audio_Controller Audio_Controller ( + // Inputs + .CLOCK_50 (CLK), + .reset (RESET), + + .clear_audio_in_memory (), + .read_audio_in (1'b0), + + .clear_audio_out_memory (), + .left_channel_audio_out (data[0]), + .right_channel_audio_out (32'b0), + .write_audio_out (write_audio_out), + + .AUD_ADCDAT (AUD_ADCDAT), + + // Bidirectionals + .AUD_BCLK (AUD_BCLK), + .AUD_ADCLRCK (AUD_ADCLRCK), + .AUD_DACLRCK (AUD_DACLRCK), + + + // Outputs + .audio_in_available (), + .left_channel_audio_in (), + .right_channel_audio_in (), + + .audio_out_allowed (audio_out_allowed), + + .AUD_XCK (AUD_MCLK), + .AUD_DACDAT (AUD_DACDAT), + +); + +avconf #(.USE_MIC_INPUT(0)) avc ( + .I2C_SCLK (I2C_SCLK), + .I2C_SDAT (I2C_SDAT), + .CLOCK_50 (CLK), + .reset (RESET) +); +endmodule diff --git a/audioTop.sv b/audioTop.sv new file mode 100644 index 0000000000000000000000000000000000000000..78f70ebea969a8276d4d1bbf7d1f1b37e444be4b --- /dev/null +++ b/audioTop.sv @@ -0,0 +1,6 @@ +module audiotest( + output + +); + +endmodule diff --git a/audio_hw.tcl b/audio_hw.tcl new file mode 100644 index 0000000000000000000000000000000000000000..4ac5fdaf140056e5175a491098085d9a35714827 --- /dev/null +++ b/audio_hw.tcl @@ -0,0 +1,168 @@ +# TCL File Generated by Component Editor 17.1 +# Tue Nov 21 02:55:44 CST 2017 +# DO NOT MODIFY + + +# +# audio "audio" v1.0 +# 2017.11.21.02:55:44 +# +# + +# +# request TCL package from ACDS 16.1 +# +package require -exact qsys 16.1 + + +# +# module audio +# +set_module_property DESCRIPTION "" +set_module_property NAME audio +set_module_property VERSION 1.0 +set_module_property INTERNAL false +set_module_property OPAQUE_ADDRESS_MAP true +set_module_property GROUP "Final-osu Custom IPs " +set_module_property AUTHOR "" +set_module_property DISPLAY_NAME audio +set_module_property INSTANTIATE_IN_SYSTEM_MODULE true +set_module_property EDITABLE true +set_module_property REPORT_TO_TALKBACK false +set_module_property ALLOW_GREYBOX_GENERATION false +set_module_property REPORT_HIERARCHY false + + +# +# file sets +# +add_fileset QUARTUS_SYNTH QUARTUS_SYNTH "" "" +set_fileset_property QUARTUS_SYNTH TOP_LEVEL new_component +set_fileset_property QUARTUS_SYNTH ENABLE_RELATIVE_INCLUDE_PATHS false +set_fileset_property QUARTUS_SYNTH ENABLE_FILE_OVERWRITE_MODE false +add_fileset_file audio.sv SYSTEM_VERILOG PATH audio.sv TOP_LEVEL_FILE +add_fileset_file Altera_UP_Audio_Bit_Counter.v VERILOG PATH Audio_Controller/Altera_UP_Audio_Bit_Counter.v +add_fileset_file Altera_UP_Audio_In_Deserializer.v VERILOG PATH Audio_Controller/Altera_UP_Audio_In_Deserializer.v +add_fileset_file Altera_UP_Audio_Out_Serializer.v VERILOG PATH Audio_Controller/Altera_UP_Audio_Out_Serializer.v +add_fileset_file Altera_UP_Clock_Edge.v VERILOG PATH Audio_Controller/Altera_UP_Clock_Edge.v +add_fileset_file Altera_UP_SYNC_FIFO.v VERILOG PATH Audio_Controller/Altera_UP_SYNC_FIFO.v +add_fileset_file Audio_Clock.v VERILOG PATH Audio_Controller/Audio_Clock.v +add_fileset_file Audio_Controller.v VERILOG PATH Audio_Controller/Audio_Controller.v +add_fileset_file I2C_Controller.v VERILOG PATH avconf/I2C_Controller.v +add_fileset_file avconf.v VERILOG PATH avconf/avconf.v + +add_fileset SIM_VERILOG SIM_VERILOG "" "" +set_fileset_property SIM_VERILOG ENABLE_RELATIVE_INCLUDE_PATHS false +set_fileset_property SIM_VERILOG ENABLE_FILE_OVERWRITE_MODE false +add_fileset_file audio.sv SYSTEM_VERILOG PATH audio.sv +add_fileset_file Altera_UP_Audio_Bit_Counter.v VERILOG PATH Audio_Controller/Altera_UP_Audio_Bit_Counter.v +add_fileset_file Altera_UP_Audio_In_Deserializer.v VERILOG PATH Audio_Controller/Altera_UP_Audio_In_Deserializer.v +add_fileset_file Altera_UP_Audio_Out_Serializer.v VERILOG PATH Audio_Controller/Altera_UP_Audio_Out_Serializer.v +add_fileset_file Altera_UP_Clock_Edge.v VERILOG PATH Audio_Controller/Altera_UP_Clock_Edge.v +add_fileset_file Altera_UP_SYNC_FIFO.v VERILOG PATH Audio_Controller/Altera_UP_SYNC_FIFO.v +add_fileset_file Audio_Clock.v VERILOG PATH Audio_Controller/Audio_Clock.v +add_fileset_file Audio_Controller.v VERILOG PATH Audio_Controller/Audio_Controller.v +add_fileset_file I2C_Controller.v VERILOG PATH avconf/I2C_Controller.v +add_fileset_file avconf.v VERILOG PATH avconf/avconf.v + + +# +# parameters +# + + +# +# display items +# + + +# +# connection point CLK +# +add_interface CLK clock end +set_interface_property CLK clockRate 50000000 +set_interface_property CLK ENABLED true +set_interface_property CLK EXPORT_OF "" +set_interface_property CLK PORT_NAME_MAP "" +set_interface_property CLK CMSIS_SVD_VARIABLES "" +set_interface_property CLK SVD_ADDRESS_GROUP "" + +add_interface_port CLK CLK clk Input 1 + + +# +# connection point RESET +# +add_interface RESET reset end +set_interface_property RESET associatedClock CLK +set_interface_property RESET synchronousEdges DEASSERT +set_interface_property RESET ENABLED true +set_interface_property RESET EXPORT_OF "" +set_interface_property RESET PORT_NAME_MAP "" +set_interface_property RESET CMSIS_SVD_VARIABLES "" +set_interface_property RESET SVD_ADDRESS_GROUP "" + +add_interface_port RESET RESET reset Input 1 + + +# +# connection point Audio_Slave +# +add_interface Audio_Slave avalon end +set_interface_property Audio_Slave addressUnits WORDS +set_interface_property Audio_Slave associatedClock CLK +set_interface_property Audio_Slave associatedReset RESET +set_interface_property Audio_Slave bitsPerSymbol 8 +set_interface_property Audio_Slave burstOnBurstBoundariesOnly false +set_interface_property Audio_Slave burstcountUnits WORDS +set_interface_property Audio_Slave explicitAddressSpan 0 +set_interface_property Audio_Slave holdTime 0 +set_interface_property Audio_Slave linewrapBursts false +set_interface_property Audio_Slave maximumPendingReadTransactions 0 +set_interface_property Audio_Slave maximumPendingWriteTransactions 0 +set_interface_property Audio_Slave readLatency 0 +set_interface_property Audio_Slave readWaitStates 0 +set_interface_property Audio_Slave readWaitTime 0 +set_interface_property Audio_Slave setupTime 0 +set_interface_property Audio_Slave timingUnits Cycles +set_interface_property Audio_Slave writeWaitTime 0 +set_interface_property Audio_Slave ENABLED true +set_interface_property Audio_Slave EXPORT_OF "" +set_interface_property Audio_Slave PORT_NAME_MAP "" +set_interface_property Audio_Slave CMSIS_SVD_VARIABLES "" +set_interface_property Audio_Slave SVD_ADDRESS_GROUP "" + +add_interface_port Audio_Slave AVL_ADDR address Input 2 +add_interface_port Audio_Slave AVL_CS chipselect Input 1 +add_interface_port Audio_Slave AVL_RD read Input 1 +add_interface_port Audio_Slave AVL_WR write Input 1 +add_interface_port Audio_Slave AVL_RDATA readdata Output 32 +add_interface_port Audio_Slave AVL_WDATA writedata Input 32 +set_interface_assignment Audio_Slave embeddedsw.configuration.isFlash 0 +set_interface_assignment Audio_Slave embeddedsw.configuration.isMemoryDevice 0 +set_interface_assignment Audio_Slave embeddedsw.configuration.isNonVolatileStorage 0 +set_interface_assignment Audio_Slave embeddedsw.configuration.isPrintableDevice 0 + + +# +# connection point EXPORT_DATA +# +add_interface EXPORT_DATA conduit end +set_interface_property EXPORT_DATA associatedClock CLK +set_interface_property EXPORT_DATA associatedReset RESET +set_interface_property EXPORT_DATA ENABLED true +set_interface_property EXPORT_DATA EXPORT_OF "" +set_interface_property EXPORT_DATA PORT_NAME_MAP "" +set_interface_property EXPORT_DATA CMSIS_SVD_VARIABLES "" +set_interface_property EXPORT_DATA SVD_ADDRESS_GROUP "" + +add_interface_port EXPORT_DATA AUD_MCLK mclk Output 1 +add_interface_port EXPORT_DATA AUD_BCLK bclk Bidir 1 +add_interface_port EXPORT_DATA AUD_ADCDAT adc_data Input 1 +add_interface_port EXPORT_DATA AUD_DACDAT dac_data Output 1 +add_interface_port EXPORT_DATA AUD_DACLRCK dac_clk Bidir 1 +add_interface_port EXPORT_DATA AUD_ADCLRCK adc_clk Bidir 1 +add_interface_port EXPORT_DATA I2C_SDAT i2c_sdat Bidir 1 +add_interface_port EXPORT_DATA I2C_SCLK i2c_sclk Output 1 +add_interface_port EXPORT_DATA LEDR ledr Output 16 + diff --git a/audio_test.qsys b/audio_test.qsys new file mode 100644 index 0000000000000000000000000000000000000000..f5d5f83df7453b3c71c0593e9230cf7705a1dd7e --- /dev/null +++ b/audio_test.qsys @@ -0,0 +1,725 @@ +<?xml version="1.0" encoding="UTF-8"?> +<system name="$${FILENAME}"> + <component + name="$${FILENAME}" + displayName="$${FILENAME}" + version="1.0" + description="" + tags="" + categories="System" /> + <parameter name="bonusData"><![CDATA[bonusData +{ + element audio_0 + { + datum _sortIndex + { + value = "6"; + type = "int"; + } + } + element audio_0.avalon_audio_slave + { + datum baseAddress + { + value = "48"; + type = "String"; + } + } + element audio_pll_0 + { + datum _sortIndex + { + value = "7"; + type = "int"; + } + } + element clk_0 + { + datum _sortIndex + { + value = "0"; + type = "int"; + } + } + element nios2_qsys_0 + { + datum _sortIndex + { + value = "5"; + type = "int"; + } + datum sopceditor_expanded + { + value = "1"; + type = "boolean"; + } + } + element nios2_qsys_0.jtag_debug_module + { + datum baseAddress + { + value = "2048"; + type = "String"; + } + } + element onchip_memory2_0 + { + datum _sortIndex + { + value = "1"; + type = "int"; + } + } + element onchip_memory2_0.s1 + { + datum _lockedAddress + { + value = "1"; + type = "boolean"; + } + datum baseAddress + { + value = "0"; + type = "String"; + } + } + element sdram + { + datum _sortIndex + { + value = "2"; + type = "int"; + } + } + element sdram.s1 + { + datum baseAddress + { + value = "268435456"; + type = "String"; + } + } + element sdram_pll + { + datum _sortIndex + { + value = "3"; + type = "int"; + } + } + element sdram_pll.pll_slave + { + datum baseAddress + { + value = "64"; + type = "String"; + } + } + element sysid_qsys_0 + { + datum _sortIndex + { + value = "4"; + type = "int"; + } + } + element sysid_qsys_0.control_slave + { + datum baseAddress + { + value = "88"; + type = "String"; + } + } +} +]]></parameter> + <parameter name="clockCrossingAdapter" value="HANDSHAKE" /> + <parameter name="device" value="EP4CE115F29C7" /> + <parameter name="deviceFamily" value="Cyclone IV E" /> + <parameter name="deviceSpeedGrade" value="7" /> + <parameter name="fabricMode" value="QSYS" /> + <parameter name="generateLegacySim" value="false" /> + <parameter name="generationId" value="0" /> + <parameter name="globalResetBus" value="false" /> + <parameter name="hdlLanguage" value="VERILOG" /> + <parameter name="hideFromIPCatalog" value="false" /> + <parameter name="lockedInterfaceDefinition" value="" /> + <parameter name="maxAdditionalLatency" value="1" /> + <parameter name="projectName" value="osu_fpga.qpf" /> + <parameter name="sopcBorderPoints" value="false" /> + <parameter name="systemHash" value="0" /> + <parameter name="testBenchDutName" value="" /> + <parameter name="timeStamp" value="0" /> + <parameter name="useTestBenchNamingPattern" value="false" /> + <instanceScript></instanceScript> + <interface + name="audio_clock" + internal="audio_pll_0.audio_clk" + type="clock" + dir="start" /> + <interface + name="aux" + internal="audio_0.external_interface" + type="conduit" + dir="end" /> + <interface name="clk" internal="clk_0.clk_in" type="clock" dir="end" /> + <interface name="reset" internal="clk_0.clk_in_reset" type="reset" dir="end" /> + <interface name="sdram_wire" internal="sdram.wire" type="conduit" dir="end" /> + <module + name="audio_0" + kind="altera_up_avalon_audio" + version="17.1" + enabled="1"> + <parameter name="AUTO_CLK_CLOCK_RATE" value="50000000" /> + <parameter name="AUTO_DEVICE_FAMILY" value="Cyclone IV E" /> + <parameter name="audio_in" value="true" /> + <parameter name="audio_out" value="false" /> + <parameter name="avalon_bus_type" value="Memory Mapped" /> + <parameter name="dw" value="32" /> + </module> + <module + name="audio_pll_0" + kind="altera_up_avalon_audio_pll" + version="17.1" + enabled="1"> + <parameter name="AUTO_DEVICE" value="EP4CE115F29C7" /> + <parameter name="AUTO_DEVICE_SPEEDGRADE" value="7" /> + <parameter name="audio_clk_freq" value="16.9344" /> + <parameter name="device_family" value="Cyclone IV E" /> + <parameter name="gui_refclk" value="50.0" /> + </module> + <module name="clk_0" kind="clock_source" version="17.1" enabled="1"> + <parameter name="clockFrequency" value="50000000" /> + <parameter name="clockFrequencyKnown" value="true" /> + <parameter name="inputClockFrequency" value="0" /> + <parameter name="resetSynchronousEdges" value="NONE" /> + </module> + <module + name="nios2_qsys_0" + kind="altera_nios2_qsys" + version="16.1" + enabled="1"> + <parameter name="bht_ramBlockType" value="Automatic" /> + <parameter name="breakOffset" value="32" /> + <parameter name="breakSlave">nios2_qsys_0.jtag_debug_module</parameter> + <parameter name="clockFrequency" value="50000000" /> + <parameter name="cpuID" value="0" /> + <parameter name="cpuID_stored" value="0" /> + <parameter name="cpuReset" value="false" /> + <parameter name="customInstSlavesSystemInfo" value="<info/>" /> + <parameter name="dataAddrWidth" value="29" /> + <parameter name="dataSlaveMapParam"><![CDATA[<address-map><slave name='onchip_memory2_0.s1' start='0x0' end='0x10' /><slave name='audio_0.avalon_audio_slave' start='0x30' end='0x40' /><slave name='sdram_pll.pll_slave' start='0x40' end='0x50' /><slave name='sysid_qsys_0.control_slave' start='0x58' end='0x60' /><slave name='nios2_qsys_0.jtag_debug_module' start='0x800' end='0x1000' /><slave name='sdram.s1' start='0x10000000' end='0x18000000' /></address-map>]]></parameter> + <parameter name="dcache_bursts" value="false" /> + <parameter name="dcache_lineSize" value="32" /> + <parameter name="dcache_numTCDM" value="0" /> + <parameter name="dcache_omitDataMaster" value="false" /> + <parameter name="dcache_ramBlockType" value="Automatic" /> + <parameter name="dcache_size" value="2048" /> + <parameter name="dcache_tagramBlockType" value="Automatic" /> + <parameter name="dcache_victim_buf_impl" value="ram" /> + <parameter name="debug_OCIOnchipTrace" value="_128" /> + <parameter name="debug_assignJtagInstanceID" value="false" /> + <parameter name="debug_debugReqSignals" value="false" /> + <parameter name="debug_embeddedPLL" value="true" /> + <parameter name="debug_jtagInstanceID" value="0" /> + <parameter name="debug_level" value="Level1" /> + <parameter name="debug_triggerArming" value="true" /> + <parameter name="deviceFamilyName" value="Cyclone IV E" /> + <parameter name="deviceFeaturesSystemInfo">ADDRESS_STALL 1 ADVANCED_INFO 0 ALLOWS_COMPILING_OTHER_FAMILY_IP 1 ANY_QFP 0 CELL_LEVEL_BACK_ANNOTATION_DISABLED 0 COMPILER_SUPPORT 1 DSP 0 DSP_SHIFTER_BLOCK 0 DUMP_ASM_LAB_BITS_FOR_POWER 1 EMUL 1 ENABLE_ADVANCED_IO_ANALYSIS_GUI_FEATURES 1 ENABLE_PIN_PLANNER 0 ENGINEERING_SAMPLE 0 EPCS 1 ESB 0 FAKE1 0 FAKE2 0 FAKE3 0 FAMILY_LEVEL_INSTALLATION_ONLY 1 FASTEST 0 FINAL_TIMING_MODEL 0 FITTER_USE_FALLING_EDGE_DELAY 0 FPP_COMPLETELY_PLACES_AND_ROUTES_PERIPHERY 0 GENERATE_DC_ON_CURRENT_WARNING_FOR_INTERNAL_CLAMPING_DIODE 0 HARDCOPY 0 HAS_18_BIT_MULTS 0 HAS_ACE_SUPPORT 1 HAS_ACTIVE_PARALLEL_FLASH_SUPPORT 0 HAS_ADJUSTABLE_OUTPUT_IO_TIMING_MEAS_POINT 0 HAS_ADVANCED_IO_INVERTED_CORNER 0 HAS_ADVANCED_IO_POWER_SUPPORT 1 HAS_ADVANCED_IO_TIMING_SUPPORT 1 HAS_ALM_SUPPORT 0 HAS_ATOM_AND_ROUTING_POWER_MODELED_TOGETHER 0 HAS_AUTO_DERIVE_CLOCK_UNCERTAINTY_SUPPORT 0 HAS_AUTO_FIT_SUPPORT 1 HAS_BALANCED_OPT_TECHNIQUE_SUPPORT 1 HAS_BENEFICIAL_SKEW_SUPPORT 1 HAS_BITLEVEL_DRIVE_STRENGTH_CONTROL 1 HAS_BSDL_FILE_GENERATION 1 HAS_CDB_RE_NETWORK_PRESERVATION_SUPPORT 0 HAS_CGA_SUPPORT 1 HAS_CHECK_NETLIST_SUPPORT 0 HAS_CLOCK_REGION_CHECKER_ENABLED 1 HAS_CORE_JUNCTION_TEMP_DERATING 0 HAS_CROSSTALK_SUPPORT 0 HAS_CUSTOM_REGION_SUPPORT 1 HAS_DAP_JTAG_FROM_HPS 0 HAS_DATA_DRIVEN_ACVQ_HSSI_SUPPORT 0 HAS_DDB_FDI_SUPPORT 0 HAS_DESIGN_ANALYZER_SUPPORT 1 HAS_DETAILED_IO_RAIL_POWER_MODEL 1 HAS_DETAILED_LEIM_STATIC_POWER_MODEL 1 HAS_DETAILED_LE_POWER_MODEL 1 HAS_DETAILED_ROUTING_MUX_STATIC_POWER_MODEL 1 HAS_DETAILED_THERMAL_CIRCUIT_PARAMETER_SUPPORT 1 HAS_DEVICE_MIGRATION_SUPPORT 1 HAS_DIAGONAL_MIGRATION_SUPPORT 0 HAS_EMIF_TOOLKIT_SUPPORT 0 HAS_ERROR_DETECTION_SUPPORT 0 HAS_FAMILY_VARIANT_MIGRATION_SUPPORT 0 HAS_FANOUT_FREE_NODE_SUPPORT 1 HAS_FAST_FIT_SUPPORT 1 HAS_FITTER_ECO_SUPPORT 1 HAS_FIT_NETLIST_OPT_RETIME_SUPPORT 1 HAS_FIT_NETLIST_OPT_SUPPORT 1 HAS_FORMAL_VERIFICATION_SUPPORT 1 HAS_FPGA_XCHANGE_SUPPORT 1 HAS_FSAC_LUTRAM_REGISTER_PACKING_SUPPORT 0 HAS_FULL_DAT_MIN_TIMING_SUPPORT 1 HAS_FULL_INCREMENTAL_DESIGN_SUPPORT 1 HAS_FUNCTIONAL_SIMULATION_SUPPORT 1 HAS_FUNCTIONAL_VERILOG_SIMULATION_SUPPORT 0 HAS_FUNCTIONAL_VHDL_SIMULATION_SUPPORT 0 HAS_GLITCH_FILTERING_SUPPORT 1 HAS_HARDCOPYII_SUPPORT 0 HAS_HC_READY_SUPPORT 0 HAS_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_HOLD_TIME_AVOIDANCE_ACROSS_CLOCK_SPINE_SUPPORT 1 HAS_HSPICE_WRITER_SUPPORT 1 HAS_HSSI_POWER_CALCULATOR 0 HAS_IBISO_WRITER_SUPPORT 0 HAS_ICD_DATA_IP 0 HAS_IDB_SUPPORT 1 HAS_INCREMENTAL_DAT_SUPPORT 1 HAS_INCREMENTAL_SYNTHESIS_SUPPORT 1 HAS_IO_ASSIGNMENT_ANALYSIS_SUPPORT 1 HAS_IO_DECODER 0 HAS_IO_PLACEMENT_OPTIMIZATION_SUPPORT 1 HAS_IO_PLACEMENT_USING_GEOMETRY_RULE 0 HAS_IO_PLACEMENT_USING_PHYSIC_RULE 0 HAS_IO_SMART_RECOMPILE_SUPPORT 0 HAS_JITTER_SUPPORT 1 HAS_JTAG_SLD_HUB_SUPPORT 1 HAS_LOGIC_LOCK_SUPPORT 1 HAS_MICROPROCESSOR 0 HAS_MIF_SMART_COMPILE_SUPPORT 1 HAS_MINMAX_TIMING_MODELING_SUPPORT 1 HAS_MIN_TIMING_ANALYSIS_SUPPORT 1 HAS_MUX_RESTRUCTURE_SUPPORT 1 HAS_NADDER_STYLE_CLOCKING 0 HAS_NADDER_STYLE_FF 0 HAS_NADDER_STYLE_LCELL_COMB 0 HAS_NEW_CDB_NAME_FOR_M20K_SCLR 0 HAS_NEW_HC_FLOW_SUPPORT 0 HAS_NEW_SERDES_MAX_RESOURCE_COUNT_REPORTING_SUPPORT 1 HAS_NEW_VPR_SUPPORT 1 HAS_NONSOCKET_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_NO_HARDBLOCK_PARTITION_SUPPORT 0 HAS_NO_JTAG_USERCODE_SUPPORT 0 HAS_OPERATING_SETTINGS_AND_CONDITIONS_REPORTING_SUPPORT 1 HAS_PAD_LOCATION_ASSIGNMENT_SUPPORT 0 HAS_PARTIAL_RECONFIG_SUPPORT 0 HAS_PASSIVE_PARALLEL_SUPPORT 0 HAS_PDN_MODEL_STATUS 0 HAS_PHYSICAL_DESIGN_PLANNER_SUPPORT 0 HAS_PHYSICAL_NETLIST_OUTPUT 0 HAS_PHYSICAL_ROUTING_SUPPORT 0 HAS_PIN_SPECIFIC_VOLTAGE_SUPPORT 1 HAS_PLDM_REF_SUPPORT 1 HAS_POWER_BINNING_LIMITS_DATA 0 HAS_POWER_ESTIMATION_SUPPORT 1 HAS_PRELIMINARY_CLOCK_UNCERTAINTY_NUMBERS 0 HAS_PRE_FITTER_FPP_SUPPORT 0 HAS_PRE_FITTER_LUTRAM_NETLIST_CHECKER_ENABLED 0 HAS_PVA_SUPPORT 1 HAS_QUARTUS_HIERARCHICAL_DESIGN_SUPPORT 0 HAS_RAPID_RECOMPILE_SUPPORT 0 HAS_RCF_SUPPORT 1 HAS_RCF_SUPPORT_FOR_DEBUGGING 0 HAS_RED_BLACK_SEPARATION_SUPPORT 0 HAS_RE_LEVEL_TIMING_GRAPH_SUPPORT 1 HAS_RISEFALL_DELAY_SUPPORT 1 HAS_SIGNAL_PROBE_SUPPORT 1 HAS_SIGNAL_TAP_SUPPORT 1 HAS_SIMULATOR_SUPPORT 0 HAS_SPLIT_IO_SUPPORT 1 HAS_SPLIT_LC_SUPPORT 1 HAS_STRICT_PRESERVATION_SUPPORT 1 HAS_SYNTHESIS_ON_ATOMS 0 HAS_SYNTH_FSYN_NETLIST_OPT_SUPPORT 1 HAS_SYNTH_NETLIST_OPT_RETIME_SUPPORT 1 HAS_SYNTH_NETLIST_OPT_SUPPORT 1 HAS_TCL_FITTER_SUPPORT 0 HAS_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_TEMPLATED_REGISTER_PACKING_SUPPORT 1 HAS_TIME_BORROWING_SUPPORT 0 HAS_TIMING_DRIVEN_SYNTHESIS_SUPPORT 1 HAS_TIMING_INFO_SUPPORT 1 HAS_TIMING_OPERATING_CONDITIONS 1 HAS_TIMING_SIMULATION_SUPPORT 1 HAS_TITAN_BASED_MAC_REGISTER_PACKER_SUPPORT 0 HAS_U2B2_SUPPORT 0 HAS_USER_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_USE_FITTER_INFO_SUPPORT 1 HAS_VCCPD_POWER_RAIL 0 HAS_VERTICAL_MIGRATION_SUPPORT 1 HAS_VIEWDRAW_SYMBOL_SUPPORT 0 HAS_VIO_SUPPORT 1 HAS_VIRTUAL_DEVICES 0 HAS_WYSIWYG_DFFEAS_SUPPORT 1 HAS_XIBISO2_WRITER_SUPPORT 0 HAS_XIBISO_WRITER_SUPPORT 1 IFP_USE_LEGACY_IO_CHECKER 0 INCREMENTAL_DESIGN_SUPPORTS_COMPATIBLE_CONSTRAINTS 1 INSTALLED 0 INTERNAL_POF_SUPPORT_ENABLED 0 INTERNAL_USE_ONLY 0 ISSUE_MILITARY_TEMPERATURE_WARNING 0 IS_BARE_DIE 0 IS_CONFIG_ROM 0 IS_DEFAULT_FAMILY 0 IS_FOR_INTERNAL_TESTING_ONLY 0 IS_HARDCOPY_FAMILY 0 IS_HBGA_PACKAGE 0 IS_HIGH_CURRENT_PART 0 IS_LOW_POWER_PART 0 IS_REVE_SILICON 0 IS_SDM_ONLY_PACKAGE 0 IS_SMI_PART 0 LOAD_BLK_TYPE_DATA_FROM_ATOM_WYS_INFO 0 LVDS_IO 1 M10K_MEMORY 0 M144K_MEMORY 0 M20K_MEMORY 0 M4K_MEMORY 0 M512_MEMORY 0 M9K_MEMORY 1 MLAB_MEMORY 0 MRAM_MEMORY 0 NOT_LISTED 0 NOT_MIGRATABLE 0 NO_FITTER_DELAY_CACHE_GENERATED 0 NO_PIN_OUT 0 NO_POF 0 NO_RPE_SUPPORT 0 NO_SUPPORT_FOR_LOGICLOCK_CONTENT_BACK_ANNOTATION 1 NO_SUPPORT_FOR_STA_CLOCK_UNCERTAINTY_CHECK 0 NO_TDC_SUPPORT 0 POSTFIT_BAK_DATABASE_EXPORT_ENABLED 1 POSTMAP_BAK_DATABASE_EXPORT_ENABLED 1 PROGRAMMER_ONLY 0 PROGRAMMER_SUPPORT 1 PVA_SUPPORTS_ONLY_SUBSET_OF_ATOMS 0 QFIT_IN_DEVELOPMENT 0 QMAP_IN_DEVELOPMENT 0 RAM_LOGICAL_NAME_CHECKING_IN_CUT_ENABLED 1 REPORTS_METASTABILITY_MTBF 1 REQUIRES_INSTALLATION_PATCH 0 REQUIRES_LIST_OF_TEMPERATURE_AND_VOLTAGE_OPERATING_CONDITIONS 1 REQUIRE_QUARTUS_HIERARCHICAL_DESIGN 0 REQUIRE_SPECIAL_HANDLING_FOR_LOCAL_LABLINE 1 RESERVES_SIGNAL_PROBE_PINS 0 RESOLVE_MAX_FANOUT_EARLY 1 RESOLVE_MAX_FANOUT_LATE 0 RESPECTS_FIXED_SIZED_LOCKED_LOCATION_LOGICLOCK 1 RESTRICTED_USER_SELECTION 0 RESTRICT_PARTIAL_RECONFIG 0 RISEFALL_SUPPORT_IS_HIDDEN 0 SHOW_HIDDEN_FAMILY_IN_PROGRAMMER 0 STRICT_TIMING_DB_CHECKS 0 SUPPORTS_ADDITIONAL_OPTIONS_FOR_UNUSED_IO 0 SUPPORTS_CRC 1 SUPPORTS_DIFFERENTIAL_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_DSP_BALANCING_BACK_ANNOTATION 0 SUPPORTS_GENERATION_OF_EARLY_POWER_ESTIMATOR_FILE 1 SUPPORTS_GLOBAL_SIGNAL_BACK_ANNOTATION 0 SUPPORTS_HIPI_RETIMING 0 SUPPORTS_LICENSE_FREE_PARTIAL_RECONFIG 0 SUPPORTS_MAC_CHAIN_OUT_ADDER 0 SUPPORTS_RAM_PACKING_BACK_ANNOTATION 0 SUPPORTS_REG_PACKING_BACK_ANNOTATION 0 SUPPORTS_SIGNALPROBE_REGISTER_PIPELINING 1 SUPPORTS_SINGLE_ENDED_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_USER_MANUAL_LOGIC_DUPLICATION 1 SUPPORTS_VID 0 SUPPORT_HIGH_SPEED_HPS 0 TMV_RUN_CUSTOMIZABLE_VIEWER 1 TMV_RUN_INTERNAL_DETAILS 1 TMV_RUN_INTERNAL_DETAILS_ON_IO 0 TMV_RUN_INTERNAL_DETAILS_ON_IOBUF 1 TMV_RUN_INTERNAL_DETAILS_ON_LCELL 0 TMV_RUN_INTERNAL_DETAILS_ON_LRAM 0 TRANSCEIVER_3G_BLOCK 0 TRANSCEIVER_6G_BLOCK 0 USES_ACV_FOR_FLED 1 USES_ADB_FOR_BACK_ANNOTATION 1 USES_ALTERA_LNSIM 0 USES_ASIC_ROUTING_POWER_CALCULATOR 0 USES_DATA_DRIVEN_PLL_COMPUTATION_UTIL 1 USES_DEV 1 USES_ICP_FOR_ECO_FITTER 0 USES_LIBERTY_TIMING 0 USES_NETWORK_ROUTING_POWER_CALCULATOR 0 USES_PART_INFO_FOR_DISPLAYING_CORE_VOLTAGE_VALUE 0 USES_POWER_SIGNAL_ACTIVITIES 1 USES_PVAFAM2 0 USES_SECOND_GENERATION_PART_INFO 0 USES_SECOND_GENERATION_POWER_ANALYZER 0 USES_THIRD_GENERATION_TIMING_MODELS_TIS 1 USES_U2B2_TIMING_MODELS 0 USES_XML_FORMAT_FOR_EMIF_PIN_MAP_FILE 0 USE_ADVANCED_IO_POWER_BY_DEFAULT 1 USE_ADVANCED_IO_TIMING_BY_DEFAULT 1 USE_BASE_FAMILY_DDB_PATH 0 USE_OCT_AUTO_CALIBRATION 1 USE_RELAX_IO_ASSIGNMENT_RULES 0 USE_RISEFALL_ONLY 1 USE_SEPARATE_LIST_FOR_TECH_MIGRATION 0 USE_SINGLE_COMPILER_PASS_PLL_MIF_FILE_WRITER 1 USE_TITAN_IO_BASED_IO_REGISTER_PACKER_UTIL 0 USING_28NM_OR_OLDER_TIMING_METHODOLOGY 1 WYSIWYG_BUS_WIDTH_CHECKING_IN_CUT_ENABLED 1</parameter> + <parameter name="exceptionOffset" value="32" /> + <parameter name="exceptionSlave" value="sdram.s1" /> + <parameter name="icache_burstType" value="None" /> + <parameter name="icache_numTCIM" value="0" /> + <parameter name="icache_ramBlockType" value="Automatic" /> + <parameter name="icache_size" value="4096" /> + <parameter name="icache_tagramBlockType" value="Automatic" /> + <parameter name="impl" value="Tiny" /> + <parameter name="instAddrWidth" value="29" /> + <parameter name="instSlaveMapParam"><![CDATA[<address-map><slave name='onchip_memory2_0.s1' start='0x0' end='0x10' /><slave name='audio_0.avalon_audio_slave' start='0x30' end='0x40' /><slave name='sdram_pll.pll_slave' start='0x40' end='0x50' /><slave name='sysid_qsys_0.control_slave' start='0x58' end='0x60' /><slave name='nios2_qsys_0.jtag_debug_module' start='0x800' end='0x1000' /><slave name='sdram.s1' start='0x10000000' end='0x18000000' /></address-map>]]></parameter> + <parameter name="internalIrqMaskSystemInfo" value="0" /> + <parameter name="manuallyAssignCpuID" value="true" /> + <parameter name="mmu_TLBMissExcOffset" value="0" /> + <parameter name="mmu_TLBMissExcSlave" value="None" /> + <parameter name="mmu_autoAssignTlbPtrSz" value="true" /> + <parameter name="mmu_enabled" value="false" /> + <parameter name="mmu_processIDNumBits" value="8" /> + <parameter name="mmu_ramBlockType" value="Automatic" /> + <parameter name="mmu_tlbNumWays" value="16" /> + <parameter name="mmu_tlbPtrSz" value="7" /> + <parameter name="mmu_udtlbNumEntries" value="6" /> + <parameter name="mmu_uitlbNumEntries" value="4" /> + <parameter name="mpu_enabled" value="false" /> + <parameter name="mpu_minDataRegionSize" value="12" /> + <parameter name="mpu_minInstRegionSize" value="12" /> + <parameter name="mpu_numOfDataRegion" value="8" /> + <parameter name="mpu_numOfInstRegion" value="8" /> + <parameter name="mpu_useLimit" value="false" /> + <parameter name="muldiv_divider" value="false" /> + <parameter name="muldiv_multiplierType" value="EmbeddedMulFast" /> + <parameter name="ocimem_ramBlockType" value="Automatic" /> + <parameter name="regfile_ramBlockType" value="Automatic" /> + <parameter name="resetOffset" value="0" /> + <parameter name="resetSlave" value="sdram.s1" /> + <parameter name="resetrequest_enabled" value="true" /> + <parameter name="setting_HBreakTest" value="false" /> + <parameter name="setting_HDLSimCachesCleared" value="true" /> + <parameter name="setting_activateModelChecker" value="false" /> + <parameter name="setting_activateMonitors" value="true" /> + <parameter name="setting_activateTestEndChecker" value="false" /> + <parameter name="setting_activateTrace" value="true" /> + <parameter name="setting_activateTrace_user" value="false" /> + <parameter name="setting_allowFullAddressRange" value="false" /> + <parameter name="setting_alwaysEncrypt" value="true" /> + <parameter name="setting_asic_enabled" value="false" /> + <parameter name="setting_asic_synopsys_translate_on_off" value="false" /> + <parameter name="setting_avalonDebugPortPresent" value="false" /> + <parameter name="setting_bhtIndexPcOnly" value="false" /> + <parameter name="setting_bhtPtrSz" value="8" /> + <parameter name="setting_bigEndian" value="false" /> + <parameter name="setting_bit31BypassDCache" value="true" /> + <parameter name="setting_branchPredictionType" value="Automatic" /> + <parameter name="setting_breakslaveoveride" value="false" /> + <parameter name="setting_clearXBitsLDNonBypass" value="true" /> + <parameter name="setting_dc_ecc_present" value="false" /> + <parameter name="setting_debugSimGen" value="false" /> + <parameter name="setting_dtcm_ecc_present" value="false" /> + <parameter name="setting_ecc_present" value="false" /> + <parameter name="setting_ecc_sim_test_ports" value="false" /> + <parameter name="setting_exportPCB" value="false" /> + <parameter name="setting_export_large_RAMs" value="false" /> + <parameter name="setting_exportvectors" value="false" /> + <parameter name="setting_extraExceptionInfo" value="false" /> + <parameter name="setting_fullWaveformSignals" value="false" /> + <parameter name="setting_ic_ecc_present" value="true" /> + <parameter name="setting_illegalInstructionsTrap" value="false" /> + <parameter name="setting_illegalMemAccessDetection" value="false" /> + <parameter name="setting_interruptControllerType" value="Internal" /> + <parameter name="setting_itcm_ecc_present" value="false" /> + <parameter name="setting_mmu_ecc_present" value="true" /> + <parameter name="setting_oci_export_jtag_signals" value="false" /> + <parameter name="setting_perfCounterWidth" value="32" /> + <parameter name="setting_performanceCounter" value="false" /> + <parameter name="setting_preciseDivisionErrorException" value="false" /> + <parameter name="setting_preciseIllegalMemAccessException" value="false" /> + <parameter name="setting_preciseSlaveAccessErrorException" value="false" /> + <parameter name="setting_removeRAMinit" value="false" /> + <parameter name="setting_rf_ecc_present" value="true" /> + <parameter name="setting_shadowRegisterSets" value="0" /> + <parameter name="setting_showInternalSettings" value="false" /> + <parameter name="setting_showUnpublishedSettings" value="false" /> + <parameter name="tightlyCoupledDataMaster0AddrWidth" value="1" /> + <parameter name="tightlyCoupledDataMaster0MapParam" value="" /> + <parameter name="tightlyCoupledDataMaster1AddrWidth" value="1" /> + <parameter name="tightlyCoupledDataMaster1MapParam" value="" /> + <parameter name="tightlyCoupledDataMaster2AddrWidth" value="1" /> + <parameter name="tightlyCoupledDataMaster2MapParam" value="" /> + <parameter name="tightlyCoupledDataMaster3AddrWidth" value="1" /> + <parameter name="tightlyCoupledDataMaster3MapParam" value="" /> + <parameter name="tightlyCoupledInstructionMaster0AddrWidth" value="1" /> + <parameter name="tightlyCoupledInstructionMaster0MapParam" value="" /> + <parameter name="tightlyCoupledInstructionMaster1AddrWidth" value="1" /> + <parameter name="tightlyCoupledInstructionMaster1MapParam" value="" /> + <parameter name="tightlyCoupledInstructionMaster2AddrWidth" value="1" /> + <parameter name="tightlyCoupledInstructionMaster2MapParam" value="" /> + <parameter name="tightlyCoupledInstructionMaster3AddrWidth" value="1" /> + <parameter name="tightlyCoupledInstructionMaster3MapParam" value="" /> + <parameter name="userDefinedSettings" value="" /> + </module> + <module + name="onchip_memory2_0" + kind="altera_avalon_onchip_memory2" + version="17.1" + enabled="1"> + <parameter name="allowInSystemMemoryContentEditor" value="false" /> + <parameter name="autoInitializationFileName">$${FILENAME}_onchip_memory2_0</parameter> + <parameter name="blockType" value="AUTO" /> + <parameter name="copyInitFile" value="false" /> + <parameter name="dataWidth" value="32" /> + <parameter name="dataWidth2" value="32" /> + <parameter name="deviceFamily" value="Cyclone IV E" /> + <parameter name="deviceFeatures">ADDRESS_STALL 1 ADVANCED_INFO 0 ALLOWS_COMPILING_OTHER_FAMILY_IP 1 ANY_QFP 0 CELL_LEVEL_BACK_ANNOTATION_DISABLED 0 COMPILER_SUPPORT 1 DSP 0 DSP_SHIFTER_BLOCK 0 DUMP_ASM_LAB_BITS_FOR_POWER 1 EMUL 1 ENABLE_ADVANCED_IO_ANALYSIS_GUI_FEATURES 1 ENABLE_PIN_PLANNER 0 ENGINEERING_SAMPLE 0 EPCS 1 ESB 0 FAKE1 0 FAKE2 0 FAKE3 0 FAMILY_LEVEL_INSTALLATION_ONLY 1 FASTEST 0 FINAL_TIMING_MODEL 0 FITTER_USE_FALLING_EDGE_DELAY 0 FPP_COMPLETELY_PLACES_AND_ROUTES_PERIPHERY 0 GENERATE_DC_ON_CURRENT_WARNING_FOR_INTERNAL_CLAMPING_DIODE 0 HARDCOPY 0 HAS_18_BIT_MULTS 0 HAS_ACE_SUPPORT 1 HAS_ACTIVE_PARALLEL_FLASH_SUPPORT 0 HAS_ADJUSTABLE_OUTPUT_IO_TIMING_MEAS_POINT 0 HAS_ADVANCED_IO_INVERTED_CORNER 0 HAS_ADVANCED_IO_POWER_SUPPORT 1 HAS_ADVANCED_IO_TIMING_SUPPORT 1 HAS_ALM_SUPPORT 0 HAS_ATOM_AND_ROUTING_POWER_MODELED_TOGETHER 0 HAS_AUTO_DERIVE_CLOCK_UNCERTAINTY_SUPPORT 0 HAS_AUTO_FIT_SUPPORT 1 HAS_BALANCED_OPT_TECHNIQUE_SUPPORT 1 HAS_BENEFICIAL_SKEW_SUPPORT 1 HAS_BITLEVEL_DRIVE_STRENGTH_CONTROL 1 HAS_BSDL_FILE_GENERATION 1 HAS_CDB_RE_NETWORK_PRESERVATION_SUPPORT 0 HAS_CGA_SUPPORT 1 HAS_CHECK_NETLIST_SUPPORT 0 HAS_CLOCK_REGION_CHECKER_ENABLED 1 HAS_CORE_JUNCTION_TEMP_DERATING 0 HAS_CROSSTALK_SUPPORT 0 HAS_CUSTOM_REGION_SUPPORT 1 HAS_DAP_JTAG_FROM_HPS 0 HAS_DATA_DRIVEN_ACVQ_HSSI_SUPPORT 0 HAS_DDB_FDI_SUPPORT 0 HAS_DESIGN_ANALYZER_SUPPORT 1 HAS_DETAILED_IO_RAIL_POWER_MODEL 1 HAS_DETAILED_LEIM_STATIC_POWER_MODEL 1 HAS_DETAILED_LE_POWER_MODEL 1 HAS_DETAILED_ROUTING_MUX_STATIC_POWER_MODEL 1 HAS_DETAILED_THERMAL_CIRCUIT_PARAMETER_SUPPORT 1 HAS_DEVICE_MIGRATION_SUPPORT 1 HAS_DIAGONAL_MIGRATION_SUPPORT 0 HAS_EMIF_TOOLKIT_SUPPORT 0 HAS_ERROR_DETECTION_SUPPORT 0 HAS_FAMILY_VARIANT_MIGRATION_SUPPORT 0 HAS_FANOUT_FREE_NODE_SUPPORT 1 HAS_FAST_FIT_SUPPORT 1 HAS_FITTER_ECO_SUPPORT 1 HAS_FIT_NETLIST_OPT_RETIME_SUPPORT 1 HAS_FIT_NETLIST_OPT_SUPPORT 1 HAS_FORMAL_VERIFICATION_SUPPORT 1 HAS_FPGA_XCHANGE_SUPPORT 1 HAS_FSAC_LUTRAM_REGISTER_PACKING_SUPPORT 0 HAS_FULL_DAT_MIN_TIMING_SUPPORT 1 HAS_FULL_INCREMENTAL_DESIGN_SUPPORT 1 HAS_FUNCTIONAL_SIMULATION_SUPPORT 1 HAS_FUNCTIONAL_VERILOG_SIMULATION_SUPPORT 0 HAS_FUNCTIONAL_VHDL_SIMULATION_SUPPORT 0 HAS_GLITCH_FILTERING_SUPPORT 1 HAS_HARDCOPYII_SUPPORT 0 HAS_HC_READY_SUPPORT 0 HAS_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_HOLD_TIME_AVOIDANCE_ACROSS_CLOCK_SPINE_SUPPORT 1 HAS_HSPICE_WRITER_SUPPORT 1 HAS_HSSI_POWER_CALCULATOR 0 HAS_IBISO_WRITER_SUPPORT 0 HAS_ICD_DATA_IP 0 HAS_IDB_SUPPORT 1 HAS_INCREMENTAL_DAT_SUPPORT 1 HAS_INCREMENTAL_SYNTHESIS_SUPPORT 1 HAS_IO_ASSIGNMENT_ANALYSIS_SUPPORT 1 HAS_IO_DECODER 0 HAS_IO_PLACEMENT_OPTIMIZATION_SUPPORT 1 HAS_IO_PLACEMENT_USING_GEOMETRY_RULE 0 HAS_IO_PLACEMENT_USING_PHYSIC_RULE 0 HAS_IO_SMART_RECOMPILE_SUPPORT 0 HAS_JITTER_SUPPORT 1 HAS_JTAG_SLD_HUB_SUPPORT 1 HAS_LOGIC_LOCK_SUPPORT 1 HAS_MICROPROCESSOR 0 HAS_MIF_SMART_COMPILE_SUPPORT 1 HAS_MINMAX_TIMING_MODELING_SUPPORT 1 HAS_MIN_TIMING_ANALYSIS_SUPPORT 1 HAS_MUX_RESTRUCTURE_SUPPORT 1 HAS_NADDER_STYLE_CLOCKING 0 HAS_NADDER_STYLE_FF 0 HAS_NADDER_STYLE_LCELL_COMB 0 HAS_NEW_CDB_NAME_FOR_M20K_SCLR 0 HAS_NEW_HC_FLOW_SUPPORT 0 HAS_NEW_SERDES_MAX_RESOURCE_COUNT_REPORTING_SUPPORT 1 HAS_NEW_VPR_SUPPORT 1 HAS_NONSOCKET_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_NO_HARDBLOCK_PARTITION_SUPPORT 0 HAS_NO_JTAG_USERCODE_SUPPORT 0 HAS_OPERATING_SETTINGS_AND_CONDITIONS_REPORTING_SUPPORT 1 HAS_PAD_LOCATION_ASSIGNMENT_SUPPORT 0 HAS_PARTIAL_RECONFIG_SUPPORT 0 HAS_PASSIVE_PARALLEL_SUPPORT 0 HAS_PDN_MODEL_STATUS 0 HAS_PHYSICAL_DESIGN_PLANNER_SUPPORT 0 HAS_PHYSICAL_NETLIST_OUTPUT 0 HAS_PHYSICAL_ROUTING_SUPPORT 0 HAS_PIN_SPECIFIC_VOLTAGE_SUPPORT 1 HAS_PLDM_REF_SUPPORT 1 HAS_POWER_BINNING_LIMITS_DATA 0 HAS_POWER_ESTIMATION_SUPPORT 1 HAS_PRELIMINARY_CLOCK_UNCERTAINTY_NUMBERS 0 HAS_PRE_FITTER_FPP_SUPPORT 0 HAS_PRE_FITTER_LUTRAM_NETLIST_CHECKER_ENABLED 0 HAS_PVA_SUPPORT 1 HAS_QUARTUS_HIERARCHICAL_DESIGN_SUPPORT 0 HAS_RAPID_RECOMPILE_SUPPORT 0 HAS_RCF_SUPPORT 1 HAS_RCF_SUPPORT_FOR_DEBUGGING 0 HAS_RED_BLACK_SEPARATION_SUPPORT 0 HAS_RE_LEVEL_TIMING_GRAPH_SUPPORT 1 HAS_RISEFALL_DELAY_SUPPORT 1 HAS_SIGNAL_PROBE_SUPPORT 1 HAS_SIGNAL_TAP_SUPPORT 1 HAS_SIMULATOR_SUPPORT 0 HAS_SPLIT_IO_SUPPORT 1 HAS_SPLIT_LC_SUPPORT 1 HAS_STRICT_PRESERVATION_SUPPORT 1 HAS_SYNTHESIS_ON_ATOMS 0 HAS_SYNTH_FSYN_NETLIST_OPT_SUPPORT 1 HAS_SYNTH_NETLIST_OPT_RETIME_SUPPORT 1 HAS_SYNTH_NETLIST_OPT_SUPPORT 1 HAS_TCL_FITTER_SUPPORT 0 HAS_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_TEMPLATED_REGISTER_PACKING_SUPPORT 1 HAS_TIME_BORROWING_SUPPORT 0 HAS_TIMING_DRIVEN_SYNTHESIS_SUPPORT 1 HAS_TIMING_INFO_SUPPORT 1 HAS_TIMING_OPERATING_CONDITIONS 1 HAS_TIMING_SIMULATION_SUPPORT 1 HAS_TITAN_BASED_MAC_REGISTER_PACKER_SUPPORT 0 HAS_U2B2_SUPPORT 0 HAS_USER_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_USE_FITTER_INFO_SUPPORT 1 HAS_VCCPD_POWER_RAIL 0 HAS_VERTICAL_MIGRATION_SUPPORT 1 HAS_VIEWDRAW_SYMBOL_SUPPORT 0 HAS_VIO_SUPPORT 1 HAS_VIRTUAL_DEVICES 0 HAS_WYSIWYG_DFFEAS_SUPPORT 1 HAS_XIBISO2_WRITER_SUPPORT 0 HAS_XIBISO_WRITER_SUPPORT 1 IFP_USE_LEGACY_IO_CHECKER 0 INCREMENTAL_DESIGN_SUPPORTS_COMPATIBLE_CONSTRAINTS 1 INSTALLED 0 INTERNAL_POF_SUPPORT_ENABLED 0 INTERNAL_USE_ONLY 0 ISSUE_MILITARY_TEMPERATURE_WARNING 0 IS_BARE_DIE 0 IS_CONFIG_ROM 0 IS_DEFAULT_FAMILY 0 IS_FOR_INTERNAL_TESTING_ONLY 0 IS_HARDCOPY_FAMILY 0 IS_HBGA_PACKAGE 0 IS_HIGH_CURRENT_PART 0 IS_LOW_POWER_PART 0 IS_REVE_SILICON 0 IS_SDM_ONLY_PACKAGE 0 IS_SMI_PART 0 LOAD_BLK_TYPE_DATA_FROM_ATOM_WYS_INFO 0 LVDS_IO 1 M10K_MEMORY 0 M144K_MEMORY 0 M20K_MEMORY 0 M4K_MEMORY 0 M512_MEMORY 0 M9K_MEMORY 1 MLAB_MEMORY 0 MRAM_MEMORY 0 NOT_LISTED 0 NOT_MIGRATABLE 0 NO_FITTER_DELAY_CACHE_GENERATED 0 NO_PIN_OUT 0 NO_POF 0 NO_RPE_SUPPORT 0 NO_SUPPORT_FOR_LOGICLOCK_CONTENT_BACK_ANNOTATION 1 NO_SUPPORT_FOR_STA_CLOCK_UNCERTAINTY_CHECK 0 NO_TDC_SUPPORT 0 POSTFIT_BAK_DATABASE_EXPORT_ENABLED 1 POSTMAP_BAK_DATABASE_EXPORT_ENABLED 1 PROGRAMMER_ONLY 0 PROGRAMMER_SUPPORT 1 PVA_SUPPORTS_ONLY_SUBSET_OF_ATOMS 0 QFIT_IN_DEVELOPMENT 0 QMAP_IN_DEVELOPMENT 0 RAM_LOGICAL_NAME_CHECKING_IN_CUT_ENABLED 1 REPORTS_METASTABILITY_MTBF 1 REQUIRES_INSTALLATION_PATCH 0 REQUIRES_LIST_OF_TEMPERATURE_AND_VOLTAGE_OPERATING_CONDITIONS 1 REQUIRE_QUARTUS_HIERARCHICAL_DESIGN 0 REQUIRE_SPECIAL_HANDLING_FOR_LOCAL_LABLINE 1 RESERVES_SIGNAL_PROBE_PINS 0 RESOLVE_MAX_FANOUT_EARLY 1 RESOLVE_MAX_FANOUT_LATE 0 RESPECTS_FIXED_SIZED_LOCKED_LOCATION_LOGICLOCK 1 RESTRICTED_USER_SELECTION 0 RESTRICT_PARTIAL_RECONFIG 0 RISEFALL_SUPPORT_IS_HIDDEN 0 SHOW_HIDDEN_FAMILY_IN_PROGRAMMER 0 STRICT_TIMING_DB_CHECKS 0 SUPPORTS_ADDITIONAL_OPTIONS_FOR_UNUSED_IO 0 SUPPORTS_CRC 1 SUPPORTS_DIFFERENTIAL_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_DSP_BALANCING_BACK_ANNOTATION 0 SUPPORTS_GENERATION_OF_EARLY_POWER_ESTIMATOR_FILE 1 SUPPORTS_GLOBAL_SIGNAL_BACK_ANNOTATION 0 SUPPORTS_HIPI_RETIMING 0 SUPPORTS_LICENSE_FREE_PARTIAL_RECONFIG 0 SUPPORTS_MAC_CHAIN_OUT_ADDER 0 SUPPORTS_RAM_PACKING_BACK_ANNOTATION 0 SUPPORTS_REG_PACKING_BACK_ANNOTATION 0 SUPPORTS_SIGNALPROBE_REGISTER_PIPELINING 1 SUPPORTS_SINGLE_ENDED_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_USER_MANUAL_LOGIC_DUPLICATION 1 SUPPORTS_VID 0 SUPPORT_HIGH_SPEED_HPS 0 TMV_RUN_CUSTOMIZABLE_VIEWER 1 TMV_RUN_INTERNAL_DETAILS 1 TMV_RUN_INTERNAL_DETAILS_ON_IO 0 TMV_RUN_INTERNAL_DETAILS_ON_IOBUF 1 TMV_RUN_INTERNAL_DETAILS_ON_LCELL 0 TMV_RUN_INTERNAL_DETAILS_ON_LRAM 0 TRANSCEIVER_3G_BLOCK 0 TRANSCEIVER_6G_BLOCK 0 USES_ACV_FOR_FLED 1 USES_ADB_FOR_BACK_ANNOTATION 1 USES_ALTERA_LNSIM 0 USES_ASIC_ROUTING_POWER_CALCULATOR 0 USES_DATA_DRIVEN_PLL_COMPUTATION_UTIL 1 USES_DEV 1 USES_ICP_FOR_ECO_FITTER 0 USES_LIBERTY_TIMING 0 USES_NETWORK_ROUTING_POWER_CALCULATOR 0 USES_PART_INFO_FOR_DISPLAYING_CORE_VOLTAGE_VALUE 0 USES_POWER_SIGNAL_ACTIVITIES 1 USES_PVAFAM2 0 USES_SECOND_GENERATION_PART_INFO 0 USES_SECOND_GENERATION_POWER_ANALYZER 0 USES_THIRD_GENERATION_TIMING_MODELS_TIS 1 USES_U2B2_TIMING_MODELS 0 USES_XML_FORMAT_FOR_EMIF_PIN_MAP_FILE 0 USE_ADVANCED_IO_POWER_BY_DEFAULT 1 USE_ADVANCED_IO_TIMING_BY_DEFAULT 1 USE_BASE_FAMILY_DDB_PATH 0 USE_OCT_AUTO_CALIBRATION 1 USE_RELAX_IO_ASSIGNMENT_RULES 0 USE_RISEFALL_ONLY 1 USE_SEPARATE_LIST_FOR_TECH_MIGRATION 0 USE_SINGLE_COMPILER_PASS_PLL_MIF_FILE_WRITER 1 USE_TITAN_IO_BASED_IO_REGISTER_PACKER_UTIL 0 USING_28NM_OR_OLDER_TIMING_METHODOLOGY 1 WYSIWYG_BUS_WIDTH_CHECKING_IN_CUT_ENABLED 1</parameter> + <parameter name="dualPort" value="false" /> + <parameter name="ecc_enabled" value="false" /> + <parameter name="enPRInitMode" value="false" /> + <parameter name="enableDiffWidth" value="false" /> + <parameter name="initMemContent" value="true" /> + <parameter name="initializationFileName" value="onchip_mem.hex" /> + <parameter name="instanceID" value="NONE" /> + <parameter name="memorySize" value="16" /> + <parameter name="readDuringWriteMode" value="DONT_CARE" /> + <parameter name="resetrequest_enabled" value="true" /> + <parameter name="simAllowMRAMContentsFile" value="false" /> + <parameter name="simMemInitOnlyFilename" value="0" /> + <parameter name="singleClockOperation" value="false" /> + <parameter name="slave1Latency" value="1" /> + <parameter name="slave2Latency" value="1" /> + <parameter name="useNonDefaultInitFile" value="false" /> + <parameter name="useShallowMemBlocks" value="false" /> + <parameter name="writable" value="true" /> + </module> + <module + name="sdram" + kind="altera_avalon_new_sdram_controller" + version="17.1" + enabled="1"> + <parameter name="TAC" value="5.5" /> + <parameter name="TMRD" value="3" /> + <parameter name="TRCD" value="20.0" /> + <parameter name="TRFC" value="70.0" /> + <parameter name="TRP" value="20.0" /> + <parameter name="TWR" value="14.0" /> + <parameter name="casLatency" value="3" /> + <parameter name="clockRate" value="50000000" /> + <parameter name="columnWidth" value="10" /> + <parameter name="componentName" value="$${FILENAME}_sdram" /> + <parameter name="dataWidth" value="32" /> + <parameter name="generateSimulationModel" value="false" /> + <parameter name="initNOPDelay" value="0.0" /> + <parameter name="initRefreshCommands" value="2" /> + <parameter name="masteredTristateBridgeSlave" value="0" /> + <parameter name="model">single_Micron_MT48LC4M32B2_7_chip</parameter> + <parameter name="numberOfBanks" value="4" /> + <parameter name="numberOfChipSelects" value="1" /> + <parameter name="pinsSharedViaTriState" value="false" /> + <parameter name="powerUpDelay" value="200.0" /> + <parameter name="refreshPeriod" value="7.8125" /> + <parameter name="registerDataIn" value="true" /> + <parameter name="rowWidth" value="13" /> + </module> + <module name="sdram_pll" kind="altpll" version="17.1" enabled="1"> + <parameter name="AUTO_DEVICE_FAMILY" value="Cyclone IV E" /> + <parameter name="AUTO_INCLK_INTERFACE_CLOCK_RATE" value="50000000" /> + <parameter name="AVALON_USE_SEPARATE_SYSCLK" value="NO" /> + <parameter name="BANDWIDTH" value="" /> + <parameter name="BANDWIDTH_TYPE" value="AUTO" /> + <parameter name="CLK0_DIVIDE_BY" value="1" /> + <parameter name="CLK0_DUTY_CYCLE" value="50" /> + <parameter name="CLK0_MULTIPLY_BY" value="1" /> + <parameter name="CLK0_PHASE_SHIFT" value="0" /> + <parameter name="CLK1_DIVIDE_BY" value="1" /> + <parameter name="CLK1_DUTY_CYCLE" value="50" /> + <parameter name="CLK1_MULTIPLY_BY" value="1" /> + <parameter name="CLK1_PHASE_SHIFT" value="-3000" /> + <parameter name="CLK2_DIVIDE_BY" value="" /> + <parameter name="CLK2_DUTY_CYCLE" value="" /> + <parameter name="CLK2_MULTIPLY_BY" value="" /> + <parameter name="CLK2_PHASE_SHIFT" value="" /> + <parameter name="CLK3_DIVIDE_BY" value="" /> + <parameter name="CLK3_DUTY_CYCLE" value="" /> + <parameter name="CLK3_MULTIPLY_BY" value="" /> + <parameter name="CLK3_PHASE_SHIFT" value="" /> + <parameter name="CLK4_DIVIDE_BY" value="" /> + <parameter name="CLK4_DUTY_CYCLE" value="" /> + <parameter name="CLK4_MULTIPLY_BY" value="" /> + <parameter name="CLK4_PHASE_SHIFT" value="" /> + <parameter name="CLK5_DIVIDE_BY" value="" /> + <parameter name="CLK5_DUTY_CYCLE" value="" /> + <parameter name="CLK5_MULTIPLY_BY" value="" /> + <parameter name="CLK5_PHASE_SHIFT" value="" /> + <parameter name="CLK6_DIVIDE_BY" value="" /> + <parameter name="CLK6_DUTY_CYCLE" value="" /> + <parameter name="CLK6_MULTIPLY_BY" value="" /> + <parameter name="CLK6_PHASE_SHIFT" value="" /> + <parameter name="CLK7_DIVIDE_BY" value="" /> + <parameter name="CLK7_DUTY_CYCLE" value="" /> + <parameter name="CLK7_MULTIPLY_BY" value="" /> + <parameter name="CLK7_PHASE_SHIFT" value="" /> + <parameter name="CLK8_DIVIDE_BY" value="" /> + <parameter name="CLK8_DUTY_CYCLE" value="" /> + <parameter name="CLK8_MULTIPLY_BY" value="" /> + <parameter name="CLK8_PHASE_SHIFT" value="" /> + <parameter name="CLK9_DIVIDE_BY" value="" /> + <parameter name="CLK9_DUTY_CYCLE" value="" /> + <parameter name="CLK9_MULTIPLY_BY" value="" /> + <parameter name="CLK9_PHASE_SHIFT" value="" /> + <parameter name="COMPENSATE_CLOCK" value="CLK0" /> + <parameter name="DOWN_SPREAD" value="" /> + <parameter name="DPA_DIVIDER" value="" /> + <parameter name="DPA_DIVIDE_BY" value="" /> + <parameter name="DPA_MULTIPLY_BY" value="" /> + <parameter name="ENABLE_SWITCH_OVER_COUNTER" value="" /> + <parameter name="EXTCLK0_DIVIDE_BY" value="" /> + <parameter name="EXTCLK0_DUTY_CYCLE" value="" /> + <parameter name="EXTCLK0_MULTIPLY_BY" value="" /> + <parameter name="EXTCLK0_PHASE_SHIFT" value="" /> + <parameter name="EXTCLK1_DIVIDE_BY" value="" /> + <parameter name="EXTCLK1_DUTY_CYCLE" value="" /> + <parameter name="EXTCLK1_MULTIPLY_BY" value="" /> + <parameter name="EXTCLK1_PHASE_SHIFT" value="" /> + <parameter name="EXTCLK2_DIVIDE_BY" value="" /> + <parameter name="EXTCLK2_DUTY_CYCLE" value="" /> + <parameter name="EXTCLK2_MULTIPLY_BY" value="" /> + <parameter name="EXTCLK2_PHASE_SHIFT" value="" /> + <parameter name="EXTCLK3_DIVIDE_BY" value="" /> + <parameter name="EXTCLK3_DUTY_CYCLE" value="" /> + <parameter name="EXTCLK3_MULTIPLY_BY" value="" /> + <parameter name="EXTCLK3_PHASE_SHIFT" value="" /> + <parameter name="FEEDBACK_SOURCE" value="" /> + <parameter name="GATE_LOCK_COUNTER" value="" /> + <parameter name="GATE_LOCK_SIGNAL" value="" /> + <parameter name="HIDDEN_CONSTANTS">CT#PORT_clk5 PORT_UNUSED CT#PORT_clk4 PORT_UNUSED CT#PORT_clk3 PORT_UNUSED CT#PORT_clk2 PORT_UNUSED CT#PORT_clk1 PORT_USED CT#PORT_clk0 PORT_USED CT#CLK0_MULTIPLY_BY 1 CT#PORT_SCANWRITE PORT_UNUSED CT#PORT_SCANACLR PORT_UNUSED CT#PORT_PFDENA PORT_UNUSED CT#PORT_PLLENA PORT_UNUSED CT#PORT_SCANDATA PORT_UNUSED CT#PORT_SCANCLKENA PORT_UNUSED CT#WIDTH_CLOCK 5 CT#PORT_SCANDATAOUT PORT_UNUSED CT#LPM_TYPE altpll CT#PLL_TYPE AUTO CT#CLK0_PHASE_SHIFT 0 CT#CLK1_DUTY_CYCLE 50 CT#PORT_PHASEDONE PORT_UNUSED CT#OPERATION_MODE NORMAL CT#PORT_CONFIGUPDATE PORT_UNUSED CT#CLK1_MULTIPLY_BY 1 CT#COMPENSATE_CLOCK CLK0 CT#PORT_CLKSWITCH PORT_UNUSED CT#INCLK0_INPUT_FREQUENCY 20000 CT#PORT_SCANDONE PORT_UNUSED CT#PORT_CLKLOSS PORT_UNUSED CT#PORT_INCLK1 PORT_UNUSED CT#AVALON_USE_SEPARATE_SYSCLK NO CT#PORT_INCLK0 PORT_USED CT#PORT_clkena5 PORT_UNUSED CT#PORT_clkena4 PORT_UNUSED CT#PORT_clkena3 PORT_UNUSED CT#PORT_clkena2 PORT_UNUSED CT#PORT_clkena1 PORT_UNUSED CT#PORT_clkena0 PORT_UNUSED CT#CLK1_PHASE_SHIFT -3000 CT#PORT_ARESET PORT_UNUSED CT#BANDWIDTH_TYPE AUTO CT#INTENDED_DEVICE_FAMILY {Cyclone IV E} CT#PORT_SCANREAD PORT_UNUSED CT#PORT_PHASESTEP PORT_UNUSED CT#PORT_SCANCLK PORT_UNUSED CT#PORT_CLKBAD1 PORT_UNUSED CT#PORT_CLKBAD0 PORT_UNUSED CT#PORT_FBIN PORT_UNUSED CT#PORT_PHASEUPDOWN PORT_UNUSED CT#PORT_extclk3 PORT_UNUSED CT#PORT_extclk2 PORT_UNUSED CT#PORT_extclk1 PORT_UNUSED CT#PORT_PHASECOUNTERSELECT PORT_UNUSED CT#PORT_extclk0 PORT_UNUSED CT#PORT_ACTIVECLOCK PORT_UNUSED CT#CLK0_DUTY_CYCLE 50 CT#CLK0_DIVIDE_BY 1 CT#CLK1_DIVIDE_BY 1 CT#PORT_LOCKED PORT_UNUSED</parameter> + <parameter name="HIDDEN_CUSTOM_ELABORATION">altpll_avalon_elaboration</parameter> + <parameter name="HIDDEN_CUSTOM_POST_EDIT">altpll_avalon_post_edit</parameter> + <parameter name="HIDDEN_IF_PORTS">IF#locked {output 0} IF#reset {input 0} IF#clk {input 0} IF#readdata {output 32} IF#write {input 0} IF#phasedone {output 0} IF#address {input 2} IF#c1 {output 0} IF#c0 {output 0} IF#writedata {input 32} IF#read {input 0} IF#areset {input 0}</parameter> + <parameter name="HIDDEN_IS_FIRST_EDIT" value="0" /> + <parameter name="HIDDEN_IS_NUMERIC">IN#WIDTH_CLOCK 1 IN#CLK0_DUTY_CYCLE 1 IN#PLL_TARGET_HARCOPY_CHECK 1 IN#CLK1_MULTIPLY_BY 1 IN#SWITCHOVER_COUNT_EDIT 1 IN#INCLK0_INPUT_FREQUENCY 1 IN#PLL_LVDS_PLL_CHECK 1 IN#PLL_AUTOPLL_CHECK 1 IN#PLL_FASTPLL_CHECK 1 IN#CLK1_DUTY_CYCLE 1 IN#PLL_ENHPLL_CHECK 1 IN#DIV_FACTOR1 1 IN#DIV_FACTOR0 1 IN#LVDS_MODE_DATA_RATE_DIRTY 1 IN#GLOCK_COUNTER_EDIT 1 IN#CLK0_DIVIDE_BY 1 IN#MULT_FACTOR1 1 IN#MULT_FACTOR0 1 IN#CLK0_MULTIPLY_BY 1 IN#USE_MIL_SPEED_GRADE 1 IN#CLK1_DIVIDE_BY 1</parameter> + <parameter name="HIDDEN_MF_PORTS">MF#areset 1 MF#clk 1 MF#locked 1 MF#inclk 1</parameter> + <parameter name="HIDDEN_PRIVATES">PT#GLOCKED_FEATURE_ENABLED 0 PT#SPREAD_FEATURE_ENABLED 0 PT#BANDWIDTH_FREQ_UNIT MHz PT#CUR_DEDICATED_CLK c0 PT#INCLK0_FREQ_EDIT 50.000 PT#BANDWIDTH_PRESET Low PT#PLL_LVDS_PLL_CHECK 0 PT#BANDWIDTH_USE_PRESET 0 PT#AVALON_USE_SEPARATE_SYSCLK NO PT#PLL_ENHPLL_CHECK 0 PT#OUTPUT_FREQ_UNIT1 MHz PT#OUTPUT_FREQ_UNIT0 MHz PT#PHASE_RECONFIG_FEATURE_ENABLED 1 PT#CREATE_CLKBAD_CHECK 0 PT#CLKSWITCH_CHECK 0 PT#INCLK1_FREQ_EDIT 100.000 PT#NORMAL_MODE_RADIO 1 PT#SRC_SYNCH_COMP_RADIO 0 PT#PLL_ARESET_CHECK 0 PT#LONG_SCAN_RADIO 1 PT#SCAN_FEATURE_ENABLED 1 PT#PHASE_RECONFIG_INPUTS_CHECK 0 PT#USE_CLK1 1 PT#USE_CLK0 1 PT#PRIMARY_CLK_COMBO inclk0 PT#BANDWIDTH 1.000 PT#GLOCKED_COUNTER_EDIT_CHANGED 1 PT#PLL_FASTPLL_CHECK 0 PT#SPREAD_FREQ_UNIT KHz PT#PLL_AUTOPLL_CHECK 1 PT#LVDS_PHASE_SHIFT_UNIT1 deg PT#LVDS_PHASE_SHIFT_UNIT0 deg PT#OUTPUT_FREQ_MODE1 1 PT#SWITCHOVER_FEATURE_ENABLED 0 PT#MIG_DEVICE_SPEED_GRADE Any PT#OUTPUT_FREQ_MODE0 1 PT#BANDWIDTH_FEATURE_ENABLED 1 PT#INCLK0_FREQ_UNIT_COMBO MHz PT#ZERO_DELAY_RADIO 0 PT#OUTPUT_FREQ1 50.00000000 PT#OUTPUT_FREQ0 50.00000000 PT#SHORT_SCAN_RADIO 0 PT#LVDS_MODE_DATA_RATE_DIRTY 0 PT#CUR_FBIN_CLK c0 PT#PLL_ADVANCED_PARAM_CHECK 0 PT#CLKBAD_SWITCHOVER_CHECK 0 PT#PHASE_SHIFT_STEP_ENABLED_CHECK 0 PT#DEVICE_SPEED_GRADE 7 PT#PLL_FBMIMIC_CHECK 0 PT#LVDS_MODE_DATA_RATE {Not Available} PT#LOCKED_OUTPUT_CHECK 0 PT#SPREAD_PERCENT 0.500 PT#PHASE_SHIFT1 -3.00000000 PT#PHASE_SHIFT0 0.00000000 PT#DIV_FACTOR1 1 PT#DIV_FACTOR0 1 PT#CNX_NO_COMPENSATE_RADIO 0 PT#USE_CLKENA1 0 PT#USE_CLKENA0 0 PT#CREATE_INCLK1_CHECK 0 PT#GLOCK_COUNTER_EDIT 1048575 PT#INCLK1_FREQ_UNIT_COMBO MHz PT#EFF_OUTPUT_FREQ_VALUE1 50.000000 PT#EFF_OUTPUT_FREQ_VALUE0 50.000000 PT#SPREAD_FREQ 50.000 PT#USE_MIL_SPEED_GRADE 0 PT#EXPLICIT_SWITCHOVER_COUNTER 0 PT#STICKY_CLK1 1 PT#STICKY_CLK0 1 PT#EXT_FEEDBACK_RADIO 0 PT#MIRROR_CLK1 0 PT#MIRROR_CLK0 0 PT#SWITCHOVER_COUNT_EDIT 1 PT#SELF_RESET_LOCK_LOSS 0 PT#PLL_PFDENA_CHECK 0 PT#INT_FEEDBACK__MODE_RADIO 1 PT#INCLK1_FREQ_EDIT_CHANGED 1 PT#CLKLOSS_CHECK 0 PT#SYNTH_WRAPPER_GEN_POSTFIX 0 PT#PHASE_SHIFT_UNIT1 ns PT#PHASE_SHIFT_UNIT0 deg PT#BANDWIDTH_USE_AUTO 1 PT#HAS_MANUAL_SWITCHOVER 1 PT#MULT_FACTOR1 1 PT#MULT_FACTOR0 1 PT#SPREAD_USE 0 PT#GLOCKED_MODE_CHECK 0 PT#SACN_INPUTS_CHECK 0 PT#DUTY_CYCLE1 50.00000000 PT#INTENDED_DEVICE_FAMILY {Cyclone IV E} PT#DUTY_CYCLE0 50.00000000 PT#PLL_TARGET_HARCOPY_CHECK 0 PT#INCLK1_FREQ_UNIT_CHANGED 1 PT#RECONFIG_FILE ALTPLL1508024956919499.mif PT#ACTIVECLK_CHECK 0</parameter> + <parameter name="HIDDEN_USED_PORTS">UP#locked used UP#c1 used UP#c0 used UP#areset used UP#inclk0 used</parameter> + <parameter name="INCLK0_INPUT_FREQUENCY" value="20000" /> + <parameter name="INCLK1_INPUT_FREQUENCY" value="" /> + <parameter name="INTENDED_DEVICE_FAMILY" value="Cyclone IV E" /> + <parameter name="INVALID_LOCK_MULTIPLIER" value="" /> + <parameter name="LOCK_HIGH" value="" /> + <parameter name="LOCK_LOW" value="" /> + <parameter name="OPERATION_MODE" value="NORMAL" /> + <parameter name="PLL_TYPE" value="AUTO" /> + <parameter name="PORT_ACTIVECLOCK" value="PORT_UNUSED" /> + <parameter name="PORT_ARESET" value="PORT_UNUSED" /> + <parameter name="PORT_CLKBAD0" value="PORT_UNUSED" /> + <parameter name="PORT_CLKBAD1" value="PORT_UNUSED" /> + <parameter name="PORT_CLKLOSS" value="PORT_UNUSED" /> + <parameter name="PORT_CLKSWITCH" value="PORT_UNUSED" /> + <parameter name="PORT_CONFIGUPDATE" value="PORT_UNUSED" /> + <parameter name="PORT_ENABLE0" value="" /> + <parameter name="PORT_ENABLE1" value="" /> + <parameter name="PORT_FBIN" value="PORT_UNUSED" /> + <parameter name="PORT_FBOUT" value="" /> + <parameter name="PORT_INCLK0" value="PORT_USED" /> + <parameter name="PORT_INCLK1" value="PORT_UNUSED" /> + <parameter name="PORT_LOCKED" value="PORT_UNUSED" /> + <parameter name="PORT_PFDENA" value="PORT_UNUSED" /> + <parameter name="PORT_PHASECOUNTERSELECT" value="PORT_UNUSED" /> + <parameter name="PORT_PHASEDONE" value="PORT_UNUSED" /> + <parameter name="PORT_PHASESTEP" value="PORT_UNUSED" /> + <parameter name="PORT_PHASEUPDOWN" value="PORT_UNUSED" /> + <parameter name="PORT_PLLENA" value="PORT_UNUSED" /> + <parameter name="PORT_SCANACLR" value="PORT_UNUSED" /> + <parameter name="PORT_SCANCLK" value="PORT_UNUSED" /> + <parameter name="PORT_SCANCLKENA" value="PORT_UNUSED" /> + <parameter name="PORT_SCANDATA" value="PORT_UNUSED" /> + <parameter name="PORT_SCANDATAOUT" value="PORT_UNUSED" /> + <parameter name="PORT_SCANDONE" value="PORT_UNUSED" /> + <parameter name="PORT_SCANREAD" value="PORT_UNUSED" /> + <parameter name="PORT_SCANWRITE" value="PORT_UNUSED" /> + <parameter name="PORT_SCLKOUT0" value="" /> + <parameter name="PORT_SCLKOUT1" value="" /> + <parameter name="PORT_VCOOVERRANGE" value="" /> + <parameter name="PORT_VCOUNDERRANGE" value="" /> + <parameter name="PORT_clk0" value="PORT_USED" /> + <parameter name="PORT_clk1" value="PORT_USED" /> + <parameter name="PORT_clk2" value="PORT_UNUSED" /> + <parameter name="PORT_clk3" value="PORT_UNUSED" /> + <parameter name="PORT_clk4" value="PORT_UNUSED" /> + <parameter name="PORT_clk5" value="PORT_UNUSED" /> + <parameter name="PORT_clk6" value="" /> + <parameter name="PORT_clk7" value="" /> + <parameter name="PORT_clk8" value="" /> + <parameter name="PORT_clk9" value="" /> + <parameter name="PORT_clkena0" value="PORT_UNUSED" /> + <parameter name="PORT_clkena1" value="PORT_UNUSED" /> + <parameter name="PORT_clkena2" value="PORT_UNUSED" /> + <parameter name="PORT_clkena3" value="PORT_UNUSED" /> + <parameter name="PORT_clkena4" value="PORT_UNUSED" /> + <parameter name="PORT_clkena5" value="PORT_UNUSED" /> + <parameter name="PORT_extclk0" value="PORT_UNUSED" /> + <parameter name="PORT_extclk1" value="PORT_UNUSED" /> + <parameter name="PORT_extclk2" value="PORT_UNUSED" /> + <parameter name="PORT_extclk3" value="PORT_UNUSED" /> + <parameter name="PORT_extclkena0" value="" /> + <parameter name="PORT_extclkena1" value="" /> + <parameter name="PORT_extclkena2" value="" /> + <parameter name="PORT_extclkena3" value="" /> + <parameter name="PRIMARY_CLOCK" value="" /> + <parameter name="QUALIFY_CONF_DONE" value="" /> + <parameter name="SCAN_CHAIN" value="" /> + <parameter name="SCAN_CHAIN_MIF_FILE" value="" /> + <parameter name="SCLKOUT0_PHASE_SHIFT" value="" /> + <parameter name="SCLKOUT1_PHASE_SHIFT" value="" /> + <parameter name="SELF_RESET_ON_GATED_LOSS_LOCK" value="" /> + <parameter name="SELF_RESET_ON_LOSS_LOCK" value="" /> + <parameter name="SKIP_VCO" value="" /> + <parameter name="SPREAD_FREQUENCY" value="" /> + <parameter name="SWITCH_OVER_COUNTER" value="" /> + <parameter name="SWITCH_OVER_ON_GATED_LOCK" value="" /> + <parameter name="SWITCH_OVER_ON_LOSSCLK" value="" /> + <parameter name="SWITCH_OVER_TYPE" value="" /> + <parameter name="USING_FBMIMICBIDIR_PORT" value="" /> + <parameter name="VALID_LOCK_MULTIPLIER" value="" /> + <parameter name="VCO_DIVIDE_BY" value="" /> + <parameter name="VCO_FREQUENCY_CONTROL" value="" /> + <parameter name="VCO_MULTIPLY_BY" value="" /> + <parameter name="VCO_PHASE_SHIFT_STEP" value="" /> + <parameter name="WIDTH_CLOCK" value="5" /> + <parameter name="WIDTH_PHASECOUNTERSELECT" value="" /> + </module> + <module + name="sysid_qsys_0" + kind="altera_avalon_sysid_qsys" + version="17.1" + enabled="1"> + <parameter name="id" value="0" /> + </module> + <connection + kind="avalon" + version="17.1" + start="nios2_qsys_0.data_master" + end="audio_0.avalon_audio_slave"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0x0030" /> + <parameter name="defaultConnection" value="false" /> + </connection> + <connection + kind="avalon" + version="17.1" + start="nios2_qsys_0.data_master" + end="sysid_qsys_0.control_slave"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0x0058" /> + <parameter name="defaultConnection" value="false" /> + </connection> + <connection + kind="avalon" + version="17.1" + start="nios2_qsys_0.data_master" + end="nios2_qsys_0.jtag_debug_module"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0x0800" /> + <parameter name="defaultConnection" value="false" /> + </connection> + <connection + kind="avalon" + version="17.1" + start="nios2_qsys_0.data_master" + end="sdram_pll.pll_slave"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0x0040" /> + <parameter name="defaultConnection" value="false" /> + </connection> + <connection + kind="avalon" + version="17.1" + start="nios2_qsys_0.data_master" + end="onchip_memory2_0.s1"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0x0000" /> + <parameter name="defaultConnection" value="false" /> + </connection> + <connection + kind="avalon" + version="17.1" + start="nios2_qsys_0.data_master" + end="sdram.s1"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0x10000000" /> + <parameter name="defaultConnection" value="false" /> + </connection> + <connection + kind="avalon" + version="17.1" + start="nios2_qsys_0.instruction_master" + end="audio_0.avalon_audio_slave"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0x0030" /> + <parameter name="defaultConnection" value="false" /> + </connection> + <connection + kind="avalon" + version="17.1" + start="nios2_qsys_0.instruction_master" + end="sysid_qsys_0.control_slave"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0x0058" /> + <parameter name="defaultConnection" value="false" /> + </connection> + <connection + kind="avalon" + version="17.1" + start="nios2_qsys_0.instruction_master" + end="nios2_qsys_0.jtag_debug_module"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0x0800" /> + <parameter name="defaultConnection" value="false" /> + </connection> + <connection + kind="avalon" + version="17.1" + start="nios2_qsys_0.instruction_master" + end="sdram_pll.pll_slave"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0x0040" /> + <parameter name="defaultConnection" value="false" /> + </connection> + <connection + kind="avalon" + version="17.1" + start="nios2_qsys_0.instruction_master" + end="onchip_memory2_0.s1"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0x0000" /> + <parameter name="defaultConnection" value="false" /> + </connection> + <connection + kind="avalon" + version="17.1" + start="nios2_qsys_0.instruction_master" + end="sdram.s1"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0x10000000" /> + <parameter name="defaultConnection" value="false" /> + </connection> + <connection kind="clock" version="17.1" start="clk_0.clk" end="audio_0.clk" /> + <connection kind="clock" version="17.1" start="clk_0.clk" end="nios2_qsys_0.clk" /> + <connection kind="clock" version="17.1" start="clk_0.clk" end="sdram.clk" /> + <connection kind="clock" version="17.1" start="clk_0.clk" end="sysid_qsys_0.clk" /> + <connection + kind="clock" + version="17.1" + start="clk_0.clk" + end="onchip_memory2_0.clk1" /> + <connection + kind="clock" + version="17.1" + start="clk_0.clk" + end="sdram_pll.inclk_interface" /> + <connection + kind="clock" + version="17.1" + start="clk_0.clk" + end="audio_pll_0.ref_clk" /> + <connection + kind="reset" + version="17.1" + start="clk_0.clk_reset" + end="sdram_pll.inclk_interface_reset" /> + <connection + kind="reset" + version="17.1" + start="clk_0.clk_reset" + end="audio_pll_0.ref_reset" /> + <connection kind="reset" version="17.1" start="clk_0.clk_reset" end="sdram.reset" /> + <connection + kind="reset" + version="17.1" + start="clk_0.clk_reset" + end="sysid_qsys_0.reset" /> + <connection + kind="reset" + version="17.1" + start="clk_0.clk_reset" + end="audio_0.reset" /> + <connection + kind="reset" + version="17.1" + start="clk_0.clk_reset" + end="onchip_memory2_0.reset1" /> + <connection + kind="reset" + version="17.1" + start="clk_0.clk_reset" + end="nios2_qsys_0.reset_n" /> + <interconnectRequirement for="$system" name="qsys_mm.clockCrossingAdapter" value="HANDSHAKE" /> + <interconnectRequirement for="$system" name="qsys_mm.enableEccProtection" value="FALSE" /> + <interconnectRequirement for="$system" name="qsys_mm.insertDefaultSlave" value="FALSE" /> + <interconnectRequirement for="$system" name="qsys_mm.maxAdditionalLatency" value="1" /> +</system> diff --git a/audio_test_top.sv b/audio_test_top.sv new file mode 100644 index 0000000000000000000000000000000000000000..ce9731b6fadd4e678238caa5b4ecf975acc3995f --- /dev/null +++ b/audio_test_top.sv @@ -0,0 +1,52 @@ +module audio_test_top ( + input logic CLOCK_50, + input logic [1:0] KEY, + output logic [7:0] LEDG, + output logic [17:0] LEDR, + //output logic [6:0] HEX0, HEX1, HEX2, HEX3, HEX4, HEX5, HEX6, HEX7, + output logic [12:0] DRAM_ADDR, + output logic [1:0] DRAM_BA, + output logic DRAM_CAS_N, DRAM_CKE, DRAM_CS_N, + inout wire [31:0] DRAM_DQ, + output logic [3:0] DRAM_DQM, + output logic DRAM_RAS_N, DRAM_WE_N, DRAM_CLK, + output logic AUD_XCK, + AUD_DACDAT, + + I2C_SCLK, + + input logic AUD_ADCDAT, + + + inout wire AUD_BCLK, + AUD_ADCLRCK, + AUD_DACLRCK, + I2C_SDAT + + //output wire [15:0] LEDR +); + otogame main_soc ( + .clk_clk(CLOCK_50), + .reset_reset_n(KEY[0]), + .sdram_wire_addr(DRAM_ADDR), + .sdram_wire_ba(DRAM_BA), + .sdram_wire_cas_n(DRAM_CAS_N), + .sdram_wire_cke(DRAM_CKE), + .sdram_wire_cs_n(DRAM_CS_N), + .sdram_wire_dq(DRAM_DQ), + .sdram_wire_dqm(DRAM_DQM), + .sdram_wire_ras_n(DRAM_RAS_N), + .sdram_wire_we_n(DRAM_WE_N), + .sdram_clk_clk(DRAM_CLK), + .audio_mclk(AUD_XCK), // audio.mclk + .audio_bclk(AUD_BCLK), // .bclk + .audio_adc_data( AUD_ADCDAT), // .adc_data + .audio_dac_data(AUD_DACDAT), // .dac_data + .audio_dac_clk(AUD_DACLRCK), // .dac_clk + .audio_adc_clk(AUD_ADCLRCK), // .adc_clk + .audio_i2c_sdat(I2C_SDAT), // .i2c_sdat + .audio_i2c_sclk(I2C_SCLK), + .audio_ledr(LEDR[15:0]) + ); + +endmodule diff --git a/avconf/I2C_Controller.v b/avconf/I2C_Controller.v new file mode 100644 index 0000000000000000000000000000000000000000..708efb52c2466f5eca0f1c02256cc94c917a96ff --- /dev/null +++ b/avconf/I2C_Controller.v @@ -0,0 +1,147 @@ +// -------------------------------------------------------------------- +// Copyright (c) 2005 by Terasic Technologies Inc. +// -------------------------------------------------------------------- +// +// Permission: +// +// Terasic grants permission to use and modify this code for use +// in synthesis for all Terasic Development Boards and Altrea Development +// Kits made by Terasic. Other use of this code, including the selling +// ,duplication, or modification of any portion is strictly prohibited. +// +// Disclaimer: +// +// This VHDL or Verilog source code is intended as a design reference +// which illustrates how these types of functions can be implemented. +// It is the user's responsibility to verify their design for +// consistency and functionality through the use of formal +// verification methods. Terasic provides no warranty regarding the use +// or functionality of this code. +// +// -------------------------------------------------------------------- +// +// Terasic Technologies Inc +// 356 Fu-Shin E. Rd Sec. 1. JhuBei City, +// HsinChu County, Taiwan +// 302 +// +// web: http://www.terasic.com/ +// email: support@terasic.com +// +// -------------------------------------------------------------------- +// +// Major Functions:i2c controller +// +// -------------------------------------------------------------------- +// +// Revision History : +// -------------------------------------------------------------------- +// Ver :| Author :| Mod. Date :| Changes Made: +// V1.0 :| Joe Yang :| 05/07/10 :| Initial Revision +// -------------------------------------------------------------------- +module I2C_Controller ( + CLOCK, + I2C_SCLK,//I2C CLOCK + I2C_SDAT,//I2C DATA + I2C_DATA,//DATA:[SLAVE_ADDR,SUB_ADDR,DATA] + GO, //GO transfor + END, //END transfor + W_R, //W_R + ACK, //ACK + RESET, + //TEST + SD_COUNTER, + SDO +); + input CLOCK; + input [23:0]I2C_DATA; + input GO; + input RESET; + input W_R; + inout I2C_SDAT; + output I2C_SCLK; + output END; + output ACK; + +//TEST + output [5:0] SD_COUNTER; + output SDO; + + +reg SDO; +reg SCLK; +reg END; +reg [23:0]SD; +reg [5:0]SD_COUNTER; + +wire I2C_SCLK=SCLK | ( ((SD_COUNTER >= 4) & (SD_COUNTER <=30))? ~CLOCK :0 ); +wire I2C_SDAT=SDO?1'bz:0 ; + +reg ACK1,ACK2,ACK3; +wire ACK=ACK1 | ACK2 |ACK3; + +//--I2C COUNTER +always @(negedge RESET or posedge CLOCK ) begin +if (!RESET) SD_COUNTER=6'b111111; +else begin +if (GO==0) + SD_COUNTER=0; + else + if (SD_COUNTER < 6'b111111) SD_COUNTER=SD_COUNTER+1; +end +end +//---- + +always @(negedge RESET or posedge CLOCK ) begin +if (!RESET) begin SCLK=1;SDO=1; ACK1=0;ACK2=0;ACK3=0; END=1; end +else +case (SD_COUNTER) + 6'd0 : begin ACK1=0 ;ACK2=0 ;ACK3=0 ; END=0; SDO=1; SCLK=1;end + //start + 6'd1 : begin SD=I2C_DATA;SDO=0;end + 6'd2 : SCLK=0; + //SLAVE ADDR + 6'd3 : SDO=SD[23]; + 6'd4 : SDO=SD[22]; + 6'd5 : SDO=SD[21]; + 6'd6 : SDO=SD[20]; + 6'd7 : SDO=SD[19]; + 6'd8 : SDO=SD[18]; + 6'd9 : SDO=SD[17]; + 6'd10 : SDO=SD[16]; + 6'd11 : SDO=1'b1;//ACK + + //SUB ADDR + 6'd12 : begin SDO=SD[15]; ACK1=I2C_SDAT; end + 6'd13 : SDO=SD[14]; + 6'd14 : SDO=SD[13]; + 6'd15 : SDO=SD[12]; + 6'd16 : SDO=SD[11]; + 6'd17 : SDO=SD[10]; + 6'd18 : SDO=SD[9]; + 6'd19 : SDO=SD[8]; + 6'd20 : SDO=1'b1;//ACK + + //DATA + 6'd21 : begin SDO=SD[7]; ACK2=I2C_SDAT; end + 6'd22 : SDO=SD[6]; + 6'd23 : SDO=SD[5]; + 6'd24 : SDO=SD[4]; + 6'd25 : SDO=SD[3]; + 6'd26 : SDO=SD[2]; + 6'd27 : SDO=SD[1]; + 6'd28 : SDO=SD[0]; + 6'd29 : SDO=1'b1;//ACK + + + //stop + 6'd30 : begin SDO=1'b0; SCLK=1'b0; ACK3=I2C_SDAT; end + 6'd31 : SCLK=1'b1; + 6'd32 : begin SDO=1'b1; END=1; end + +endcase +end + + + +endmodule diff --git a/avconf/avconf.v b/avconf/avconf.v new file mode 100644 index 0000000000000000000000000000000000000000..e6f31f6ab873d2facf593811465bbfe4d630ff64 --- /dev/null +++ b/avconf/avconf.v @@ -0,0 +1,186 @@ +module avconf ( // Host Side + CLOCK_50, + reset, + // I2C Side + I2C_SCLK, + I2C_SDAT ); +// Host Side +input CLOCK_50; +input reset; +// I2C Side +output I2C_SCLK; +inout I2C_SDAT; +// Internal Registers/Wires +reg [15:0] mI2C_CLK_DIV; +reg [23:0] mI2C_DATA; +reg mI2C_CTRL_CLK; +reg mI2C_GO; +wire mI2C_END; +wire mI2C_ACK; +wire iRST_N = !reset; +reg [15:0] LUT_DATA; +reg [5:0] LUT_INDEX; +reg [3:0] mSetup_ST; + +parameter USE_MIC_INPUT = 1'b0; + +parameter AUD_LINE_IN_LC = 9'd24; +parameter AUD_LINE_IN_RC = 9'd24; +parameter AUD_LINE_OUT_LC = 9'd119; +parameter AUD_LINE_OUT_RC = 9'd119; +parameter AUD_ADC_PATH = 9'd17; +parameter AUD_DAC_PATH = 9'd6; +parameter AUD_POWER = 9'h000; +parameter AUD_DATA_FORMAT = 9'd77; +parameter AUD_SAMPLE_CTRL = 9'd0; +parameter AUD_SET_ACTIVE = 9'h001; + +// Clock Setting +parameter CLK_Freq = 50000000; // 50 MHz +parameter I2C_Freq = 20000; // 20 KHz +// LUT Data Number +parameter LUT_SIZE = 50; +// Audio Data Index +parameter SET_LIN_L = 0; +parameter SET_LIN_R = 1; +parameter SET_HEAD_L = 2; +parameter SET_HEAD_R = 3; +parameter A_PATH_CTRL = 4; +parameter D_PATH_CTRL = 5; +parameter POWER_ON = 6; +parameter SET_FORMAT = 7; +parameter SAMPLE_CTRL = 8; +parameter SET_ACTIVE = 9; +// Video Data Index +parameter SET_VIDEO = 10; + +///////////////////// I2C Control Clock //////////////////////// +always@(posedge CLOCK_50 or negedge iRST_N) +begin + if(!iRST_N) + begin + mI2C_CTRL_CLK <= 0; + mI2C_CLK_DIV <= 0; + end + else + begin + if( mI2C_CLK_DIV < (CLK_Freq/I2C_Freq) ) + mI2C_CLK_DIV <= mI2C_CLK_DIV+1; + else + begin + mI2C_CLK_DIV <= 0; + mI2C_CTRL_CLK <= ~mI2C_CTRL_CLK; + end + end +end +//////////////////////////////////////////////////////////////////// +I2C_Controller u0 ( .CLOCK(mI2C_CTRL_CLK), // Controller Work Clock + .I2C_SCLK(I2C_SCLK), // I2C CLOCK + .I2C_SDAT(I2C_SDAT), // I2C DATA + .I2C_DATA(mI2C_DATA), // DATA:[SLAVE_ADDR,SUB_ADDR,DATA] + .GO(mI2C_GO), // GO transfor + .END(mI2C_END), // END transfor + .ACK(mI2C_ACK), // ACK + .RESET(iRST_N) ); +//////////////////////////////////////////////////////////////////// +////////////////////// Config Control //////////////////////////// +always@(posedge mI2C_CTRL_CLK or negedge iRST_N) +begin + if(!iRST_N) + begin + LUT_INDEX <= 0; + mSetup_ST <= 0; + mI2C_GO <= 0; + end + else + begin + if(LUT_INDEX<LUT_SIZE) + begin + case(mSetup_ST) + 0: begin + if(LUT_INDEX<SET_VIDEO) + mI2C_DATA <= {8'h34,LUT_DATA}; + else + mI2C_DATA <= {8'h40,LUT_DATA}; + mI2C_GO <= 1; + mSetup_ST <= 1; + end + 1: begin + if(mI2C_END) + begin + if(!mI2C_ACK) + mSetup_ST <= 2; + else + mSetup_ST <= 0; + mI2C_GO <= 0; + end + end + 2: begin + LUT_INDEX <= LUT_INDEX+1; + mSetup_ST <= 0; + end + endcase + end + end +end +//////////////////////////////////////////////////////////////////// +///////////////////// Config Data LUT ////////////////////////// +always +begin + case(LUT_INDEX) + // Audio Config Data + SET_LIN_L : LUT_DATA <= {7'h0, AUD_LINE_IN_LC}; + SET_LIN_R : LUT_DATA <= {7'h1, AUD_LINE_IN_RC}; + SET_HEAD_L : LUT_DATA <= {7'h2, AUD_LINE_OUT_LC}; + SET_HEAD_R : LUT_DATA <= {7'h3, AUD_LINE_OUT_RC}; + A_PATH_CTRL : LUT_DATA <= {7'h4, AUD_ADC_PATH} + (16'h0004 * USE_MIC_INPUT); + D_PATH_CTRL : LUT_DATA <= {7'h5, AUD_DAC_PATH}; + POWER_ON : LUT_DATA <= {7'h6, AUD_POWER}; + SET_FORMAT : LUT_DATA <= {7'h7, AUD_DATA_FORMAT}; + SAMPLE_CTRL : LUT_DATA <= {7'h8, AUD_SAMPLE_CTRL}; + SET_ACTIVE : LUT_DATA <= {7'h9, AUD_SET_ACTIVE}; + // Video Config Data + SET_VIDEO+0 : LUT_DATA <= 16'h1500; + SET_VIDEO+1 : LUT_DATA <= 16'h1741; + SET_VIDEO+2 : LUT_DATA <= 16'h3a16; + SET_VIDEO+3 : LUT_DATA <= 16'h503f; // 16'h5004; + SET_VIDEO+4 : LUT_DATA <= 16'hc305; + SET_VIDEO+5 : LUT_DATA <= 16'hc480; + SET_VIDEO+6 : LUT_DATA <= 16'h0e80; + SET_VIDEO+7 : LUT_DATA <= 16'h503f; // 16'h5020; + SET_VIDEO+8 : LUT_DATA <= 16'h5218; + SET_VIDEO+9 : LUT_DATA <= 16'h58ed; + SET_VIDEO+10: LUT_DATA <= 16'h77c5; + SET_VIDEO+11: LUT_DATA <= 16'h7c93; + SET_VIDEO+12: LUT_DATA <= 16'h7d00; + SET_VIDEO+13: LUT_DATA <= 16'hd048; + SET_VIDEO+14: LUT_DATA <= 16'hd5a0; + SET_VIDEO+15: LUT_DATA <= 16'hd7ea; + SET_VIDEO+16: LUT_DATA <= 16'he43e; + SET_VIDEO+17: LUT_DATA <= 16'hea0f; + SET_VIDEO+18: LUT_DATA <= 16'h3112; + SET_VIDEO+19: LUT_DATA <= 16'h3281; + SET_VIDEO+20: LUT_DATA <= 16'h3384; + SET_VIDEO+21: LUT_DATA <= 16'h37A0; + SET_VIDEO+22: LUT_DATA <= 16'he580; + SET_VIDEO+23: LUT_DATA <= 16'he603; + SET_VIDEO+24: LUT_DATA <= 16'he785; + SET_VIDEO+25: LUT_DATA <= 16'h2778; // 16'h503f; // 16'h5000; + SET_VIDEO+26: LUT_DATA <= 16'h5100; + SET_VIDEO+27: LUT_DATA <= 16'h0050; + SET_VIDEO+28: LUT_DATA <= 16'h1000; + SET_VIDEO+29: LUT_DATA <= 16'h0402; + SET_VIDEO+30: LUT_DATA <= 16'h0860; + SET_VIDEO+31: LUT_DATA <= 16'h0a18; + SET_VIDEO+32: LUT_DATA <= 16'h1100; + SET_VIDEO+33: LUT_DATA <= 16'h2b00; + SET_VIDEO+34: LUT_DATA <= 16'h2c8c; + SET_VIDEO+35: LUT_DATA <= 16'h2df8; + SET_VIDEO+36: LUT_DATA <= 16'h2eee; + SET_VIDEO+37: LUT_DATA <= 16'h2ff4; + SET_VIDEO+38: LUT_DATA <= 16'h30d2; + SET_VIDEO+39: LUT_DATA <= 16'h0e05; + endcase +end +//////////////////////////////////////////////////////////////////// +endmodule diff --git a/osu_fpga_toplevel.qsf b/osu_fpga_toplevel.qsf index 480fe63973260d581458f996e83a1a66f7531834..b4c6f6c644c6e0861821a49b53ae1f6522d04848 100644 --- a/osu_fpga_toplevel.qsf +++ b/osu_fpga_toplevel.qsf @@ -1,66 +1,29 @@ -# -------------------------------------------------------------------------- # -# -# Copyright (C) 2017 Intel Corporation. All rights reserved. -# Your use of Intel Corporation's design tools, logic functions -# and other software and tools, and its AMPP partner logic -# functions, and any output files from any of the foregoing -# (including device programming or simulation files), and any -# associated documentation or information are expressly subject -# to the terms and conditions of the Intel Program License -# Subscription Agreement, the Intel Quartus Prime License Agreement, -# the Intel MegaCore Function License Agreement, or other -# applicable license agreement, including, without limitation, -# that your use is for the sole purpose of programming logic -# devices manufactured by Intel and sold by Intel or its -# authorized distributors. Please refer to the applicable -# agreement for further details. -# -# -------------------------------------------------------------------------- # -# -# Quartus Prime -# Version 17.0.0 Build 595 04/25/2017 SJ Lite Edition -# Date created = 23:41:32 November 11, 2017 -# -# -------------------------------------------------------------------------- # -# -# Notes: -# -# 1) The default values for assignments are stored in the file: -# osu_fpga_toplevel_assignment_defaults.qdf -# If this file doesn't exist, see file: -# assignment_defaults.qdf -# -# 2) Altera recommends that you do not modify this file. This -# file is updated automatically by the Quartus Prime software -# and any changes you make may be lost or overwritten. -# -# -------------------------------------------------------------------------- # - - +set_global_assignment -name TOP_LEVEL_ENTITY audio_test_top +#============================================================ +# Build by Altera University Program +#============================================================ set_global_assignment -name FAMILY "Cyclone IV E" -set_global_assignment -name DEVICE EP4CE115F29C7 -set_global_assignment -name TOP_LEVEL_ENTITY osu_fpga_toplevel -set_global_assignment -name ORIGINAL_QUARTUS_VERSION 17.0.0 -set_global_assignment -name PROJECT_CREATION_TIME_DATE "23:41:32 NOVEMBER 11, 2017" -set_global_assignment -name LAST_QUARTUS_VERSION "17.0.0 Lite Edition" -set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files -set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 -set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 -set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 1 -set_global_assignment -name NOMINAL_CORE_SUPPLY_VOLTAGE 1.2V -set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim-Altera (SystemVerilog)" -set_global_assignment -name EDA_TIME_SCALE "1 ps" -section_id eda_simulation -set_global_assignment -name EDA_OUTPUT_DATA_FORMAT "SYSTEMVERILOG HDL" -section_id eda_simulation +set_global_assignment -name DEVICE EP4CE115F29C8 +set_global_assignment -name USE_GENERATED_PHYSICAL_CONSTRAINTS OFF -section_id eda_blast_fpga +set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO" + +#============================================================ +# CLOCK +#============================================================ set_location_assignment PIN_Y2 -to CLOCK_50 set_location_assignment PIN_AG14 -to CLOCK2_50 set_location_assignment PIN_AG15 -to CLOCK3_50 -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CLOCK_50 -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CLOCK2_50 -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CLOCK3_50 + + +#============================================================ +# Sma +#============================================================ set_location_assignment PIN_AH14 -to SMA_CLKIN set_location_assignment PIN_AE23 -to SMA_CLKOUT -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SMA_CLKIN -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SMA_CLKOUT + +#============================================================ +# LED +#============================================================ set_location_assignment PIN_E21 -to LEDG[0] set_location_assignment PIN_E22 -to LEDG[1] set_location_assignment PIN_E25 -to LEDG[2] @@ -70,15 +33,7 @@ set_location_assignment PIN_G20 -to LEDG[5] set_location_assignment PIN_G22 -to LEDG[6] set_location_assignment PIN_G21 -to LEDG[7] set_location_assignment PIN_F17 -to LEDG[8] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[2] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[3] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[4] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[5] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[6] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[7] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[8] + set_location_assignment PIN_G19 -to LEDR[0] set_location_assignment PIN_E19 -to LEDR[2] set_location_assignment PIN_F19 -to LEDR[1] @@ -97,31 +52,18 @@ set_location_assignment PIN_F15 -to LEDR[14] set_location_assignment PIN_G15 -to LEDR[15] set_location_assignment PIN_G16 -to LEDR[16] set_location_assignment PIN_H15 -to LEDR[17] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[3] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[4] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[5] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[6] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[7] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[8] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[9] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[10] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[11] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[12] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[13] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[14] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[15] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[16] -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[17] + +#============================================================ +# KEY +#============================================================ set_location_assignment PIN_M23 -to KEY[0] set_location_assignment PIN_M21 -to KEY[1] set_location_assignment PIN_N21 -to KEY[2] set_location_assignment PIN_R24 -to KEY[3] -set_instance_assignment -name IO_STANDARD "2.5 V" -to KEY[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to KEY[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to KEY[2] -set_instance_assignment -name IO_STANDARD "2.5 V" -to KEY[3] + +#============================================================ +# SW +#============================================================ set_location_assignment PIN_AB28 -to SW[0] set_location_assignment PIN_AC28 -to SW[1] set_location_assignment PIN_AC27 -to SW[2] @@ -140,24 +82,10 @@ set_location_assignment PIN_AA23 -to SW[14] set_location_assignment PIN_AA22 -to SW[15] set_location_assignment PIN_Y24 -to SW[16] set_location_assignment PIN_Y23 -to SW[17] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[2] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[3] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[4] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[5] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[6] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[7] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[8] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[9] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[10] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[11] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[12] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[13] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[14] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[15] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[16] -set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[17] + +#============================================================ +# SEG7 +#============================================================ set_location_assignment PIN_G18 -to HEX0[0] set_location_assignment PIN_F22 -to HEX0[1] set_location_assignment PIN_E17 -to HEX0[2] @@ -214,62 +142,10 @@ set_location_assignment PIN_AH17 -to HEX7[3] set_location_assignment PIN_AF17 -to HEX7[4] set_location_assignment PIN_AG18 -to HEX7[5] set_location_assignment PIN_AA14 -to HEX7[6] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX0[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX0[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX0[2] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX0[3] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX0[4] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX0[5] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX0[6] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX1[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX1[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX1[2] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX1[3] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX1[4] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX1[5] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX1[6] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX2[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX2[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX2[2] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX2[3] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX2[4] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX2[5] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX2[6] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX3[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX3[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX6[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX6[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX6[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX6[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX6[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX6[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX6[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX7[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX7[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX7[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX7[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX7[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX7[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX7[6] + +#============================================================ +# LCD +#============================================================ set_location_assignment PIN_L6 -to LCD_BLON set_location_assignment PIN_M5 -to LCD_DATA[7] set_location_assignment PIN_M3 -to LCD_DATA[6] @@ -283,35 +159,26 @@ set_location_assignment PIN_L4 -to LCD_EN set_location_assignment PIN_M1 -to LCD_RW set_location_assignment PIN_M2 -to LCD_RS set_location_assignment PIN_L5 -to LCD_ON -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_DATA[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_DATA[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_DATA[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_DATA[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_DATA[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_DATA[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_DATA[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_DATA[7] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_BLON -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_RW -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_EN -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_RS -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_ON + +#============================================================ +# RS232 +#============================================================ set_location_assignment PIN_G9 -to UART_TXD set_location_assignment PIN_G12 -to UART_RXD set_location_assignment PIN_G14 -to UART_CTS set_location_assignment PIN_J13 -to UART_RTS -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to UART_TXD -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to UART_RXD -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to UART_CTS -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to UART_RTS + +#============================================================ +# PS2 +#============================================================ set_location_assignment PIN_G6 -to PS2_KBCLK set_location_assignment PIN_H5 -to PS2_KBDAT set_location_assignment PIN_G5 -to PS2_MSCLK set_location_assignment PIN_F5 -to PS2_MSDAT -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to PS2_KBCLK -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to PS2_KBDAT -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to PS2_MSCLK -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to PS2_MSDAT + +#============================================================ +# SDCARD +#============================================================ set_location_assignment PIN_AE14 -to SD_DAT[0] set_location_assignment PIN_AF13 -to SD_DAT[1] set_location_assignment PIN_AB14 -to SD_DAT[2] @@ -319,13 +186,10 @@ set_location_assignment PIN_AC14 -to SD_DAT[3] set_location_assignment PIN_AE13 -to SD_CLK set_location_assignment PIN_AD14 -to SD_CMD set_location_assignment PIN_AF14 -to SD_WP_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_CMD -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_CLK -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_WP_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_DAT[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_DAT[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_DAT[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_DAT[3] + +#============================================================ +# VGA +#============================================================ set_location_assignment PIN_D12 -to VGA_B[7] set_location_assignment PIN_D11 -to VGA_B[6] set_location_assignment PIN_C12 -to VGA_B[5] @@ -355,55 +219,32 @@ set_location_assignment PIN_F11 -to VGA_BLANK_N set_location_assignment PIN_C10 -to VGA_SYNC_N set_location_assignment PIN_G13 -to VGA_HS set_location_assignment PIN_C13 -to VGA_VS -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_HS -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_VS -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_SYNC_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_CLK -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_BLANK_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[7] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[7] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[7] + +#============================================================ +# Audio +#============================================================ set_location_assignment PIN_D1 -to AUD_DACDAT set_location_assignment PIN_E3 -to AUD_DACLRCK set_location_assignment PIN_D2 -to AUD_ADCDAT set_location_assignment PIN_C2 -to AUD_ADCLRCK set_location_assignment PIN_E1 -to AUD_XCK set_location_assignment PIN_F2 -to AUD_BCLK -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to AUD_ADCLRCK -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to AUD_ADCDAT -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to AUD_DACLRCK -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to AUD_DACDAT -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to AUD_XCK -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to AUD_BCLK + +#============================================================ +# I2C for EEPROM +#============================================================ set_location_assignment PIN_D14 -to EEP_I2C_SCLK set_location_assignment PIN_E14 -to EEP_I2C_SDAT -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to EEP_I2C_SCLK -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to EEP_I2C_SDAT + +#============================================================ +# I2C for Audioand Tv-Decode 1 and 2 +#============================================================ set_location_assignment PIN_B7 -to I2C_SCLK set_location_assignment PIN_A8 -to I2C_SDAT -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to I2C_SCLK -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to I2C_SDAT + +#============================================================ +# Ethernet 0 +#============================================================ set_location_assignment PIN_A17 -to ENET0_GTX_CLK set_location_assignment PIN_A21 -to ENET0_INT_N set_location_assignment PIN_C20 -to ENET0_MDC @@ -425,25 +266,10 @@ set_location_assignment PIN_A19 -to ENET0_TX_DATA[2] set_location_assignment PIN_B19 -to ENET0_TX_DATA[3] set_location_assignment PIN_A18 -to ENET0_TX_EN set_location_assignment PIN_B18 -to ENET0_TX_ER -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_TX_DATA[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_RX_DATA[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_TX_DATA[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_RX_DATA[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_RX_DATA[2] -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_TX_DATA[3] -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_RX_DATA[3] -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_GTX_CLK -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_TX_EN -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_TX_ER -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_RESET_N -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_RX_DV -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_RX_ER -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_RX_CRS -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_RX_COL -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_RX_CLK -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_TX_CLK -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_MDC -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_MDIO + +#============================================================ +# Ethernet 1 +#============================================================ set_location_assignment PIN_C23 -to ENET1_GTX_CLK set_location_assignment PIN_D24 -to ENET1_INT_N set_location_assignment PIN_D23 -to ENET1_MDC @@ -465,30 +291,14 @@ set_location_assignment PIN_B26 -to ENET1_TX_DATA[2] set_location_assignment PIN_C26 -to ENET1_TX_DATA[3] set_location_assignment PIN_B25 -to ENET1_TX_EN set_location_assignment PIN_A25 -to ENET1_TX_ER -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_TX_DATA[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_RX_DATA[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_TX_DATA[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_RX_DATA[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_TX_DATA[2] -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_RX_DATA[2] -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_TX_DATA[3] -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_RX_DATA[3] -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_GTX_CLK -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_TX_EN -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_TX_ER -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_INT_N -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_RESET_N -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_RX_DV -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_RX_ER -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_RX_CRS -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_RX_COL -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_RX_CLK -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_TX_CLK -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_MDC -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET1_MDIO + set_location_assignment PIN_C14 -to ENET0_LINK100 set_location_assignment PIN_D13 -to ENET1_LINK100 set_location_assignment PIN_A14 -to ENETCLK_25 + +#============================================================ +# TV Decoder +#============================================================ set_location_assignment PIN_F7 -to TD_DATA[7] set_location_assignment PIN_E7 -to TD_DATA[6] set_location_assignment PIN_D6 -to TD_DATA[5] @@ -501,18 +311,10 @@ set_location_assignment PIN_B14 -to TD_CLK27 set_location_assignment PIN_G7 -to TD_RESET_N set_location_assignment PIN_E4 -to TD_VS set_location_assignment PIN_E5 -to TD_HS -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_HS -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_VS -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_CLK27 -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_RESET_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_DATA[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_DATA[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_DATA[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_DATA[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_DATA[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_DATA[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_DATA[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_DATA[7] + +#============================================================ +# USB +#============================================================ set_location_assignment PIN_D4 -to OTG_DACK_N[1] set_location_assignment PIN_C4 -to OTG_DACK_N[0] set_location_assignment PIN_A3 -to OTG_CS_N @@ -543,38 +345,15 @@ set_location_assignment PIN_G3 -to OTG_DATA[12] set_location_assignment PIN_F1 -to OTG_DATA[13] set_location_assignment PIN_F3 -to OTG_DATA[14] set_location_assignment PIN_G4 -to OTG_DATA[15] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DATA[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DATA[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DATA[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DATA[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DATA[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DATA[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DATA[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DATA[7] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DATA[8] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DATA[9] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DATA[10] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DATA[11] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DATA[12] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DATA[13] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DATA[14] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DATA[15] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_ADDR[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_ADDR[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_CS_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_WE_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_OE_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_INT[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_INT[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_RST_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DREQ[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DREQ[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DACK_N[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_DACK_N[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_FSPEED -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to OTG_LSPEED + +#============================================================ +# IR Receiver +#============================================================ set_location_assignment PIN_Y15 -to IRDA_RXD -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to IRDA_RXD + +#============================================================ +# SDRAM +#============================================================ set_location_assignment PIN_AE5 -to DRAM_CLK set_location_assignment PIN_U1 -to DRAM_DQ[31] set_location_assignment PIN_U4 -to DRAM_DQ[30] @@ -632,63 +411,10 @@ set_location_assignment PIN_P1 -to DRAM_ADDR[3] set_location_assignment PIN_U8 -to DRAM_ADDR[2] set_location_assignment PIN_V8 -to DRAM_ADDR[1] set_location_assignment PIN_R6 -to DRAM_ADDR[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_BA[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_BA[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQM[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQM[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQM[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQM[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_RAS_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_CAS_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_CKE -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_CLK -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_WE_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_CS_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[7] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[8] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[9] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[10] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[11] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[12] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[13] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[14] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[15] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[16] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[17] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[18] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[19] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[20] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[21] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[22] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[23] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[24] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[25] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[26] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[27] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[28] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[29] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[30] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[31] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[7] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[8] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[9] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[10] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[11] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[12] + +#============================================================ +# SRAM +#============================================================ set_location_assignment PIN_AG3 -to SRAM_DQ[15] set_location_assignment PIN_AF3 -to SRAM_DQ[14] set_location_assignment PIN_AE4 -to SRAM_DQ[13] @@ -730,47 +456,10 @@ set_location_assignment PIN_AB8 -to SRAM_ADDR[18] set_location_assignment PIN_AB9 -to SRAM_ADDR[17] set_location_assignment PIN_AC11 -to SRAM_ADDR[16] set_location_assignment PIN_AB11 -to SRAM_ADDR[15] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[7] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[8] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[9] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[10] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[11] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[12] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[13] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[14] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[15] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[16] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[17] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[18] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_ADDR[19] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_DQ[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_DQ[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_DQ[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_DQ[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_DQ[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_DQ[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_DQ[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_DQ[7] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_DQ[8] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_DQ[9] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_DQ[10] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_DQ[11] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_DQ[12] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_DQ[13] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_DQ[14] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_DQ[15] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_UB_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_LB_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_CE_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_OE_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SRAM_WE_N + +#============================================================ +# Flash +#============================================================ set_location_assignment PIN_AF12 -to FL_DQ[7] set_location_assignment PIN_AH11 -to FL_DQ[6] set_location_assignment PIN_AG11 -to FL_DQ[5] @@ -808,43 +497,10 @@ set_location_assignment PIN_AC10 -to FL_WE_N set_location_assignment PIN_AE11 -to FL_RESET_N set_location_assignment PIN_AE12 -to FL_WP_N set_location_assignment PIN_Y1 -to FL_RY -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[7] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[8] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[9] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[10] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[11] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[12] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[13] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[14] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[15] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[16] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[17] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[18] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[19] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[20] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[21] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_ADDR[22] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_DQ[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_DQ[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_DQ[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_DQ[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_DQ[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_DQ[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_DQ[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_DQ[7] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_CE_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_OE_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_RESET_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_RY -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_WE_N -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_WP_N + +#============================================================ +# GPIO, GPIO connect to GPIO Default +#============================================================ set_location_assignment PIN_AB22 -to GPIO[0] set_location_assignment PIN_AC15 -to GPIO[1] set_location_assignment PIN_AB21 -to GPIO[2] @@ -881,42 +537,10 @@ set_location_assignment PIN_AF20 -to GPIO[32] set_location_assignment PIN_AH26 -to GPIO[33] set_location_assignment PIN_AH23 -to GPIO[34] set_location_assignment PIN_AG26 -to GPIO[35] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[7] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[8] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[9] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[10] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[11] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[12] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[13] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[14] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[15] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[16] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[17] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[18] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[19] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[20] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[21] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[22] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[23] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[24] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[25] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[26] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[27] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[28] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[29] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[30] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[31] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[32] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[33] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[34] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[35] + +#============================================================ +# HSMC, HSMC connect to HSMC Default +#============================================================ set_location_assignment PIN_J27 -to HSMC_CLKIN_P1 set_location_assignment PIN_J28 -to HSMC_CLKIN_N1 set_location_assignment PIN_Y27 -to HSMC_CLKIN_P2 @@ -999,35 +623,10 @@ set_location_assignment PIN_AE28 -to HSMC_D[1] set_location_assignment PIN_AE27 -to HSMC_D[2] set_location_assignment PIN_AF27 -to HSMC_D[3] set_location_assignment PIN_AH15 -to HSMC_CLKIN0 -set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_CLKOUT0 -set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_D[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_D[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_D[2] -set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_D[3] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_CLKOUT_P1 -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_CLKOUT_N1 -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_P[12] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_P[12] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_N[12] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_N[12] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_P[13] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_P[13] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_N[13] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_N[13] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_P[14] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_P[14] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_N[14] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_N[14] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_P[15] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_P[15] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_N[15] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_N[15] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_P[16] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_P[16] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_N[16] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_N[16] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_CLKOUT_P2 -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_CLKOUT_N2 + +#============================================================ +# HSMC, HSMC connect to HSMC Default +#============================================================ set_location_assignment PIN_J10 -to EXT_IO[0] set_location_assignment PIN_J14 -to EXT_IO[1] set_location_assignment PIN_H13 -to EXT_IO[2] @@ -1035,92 +634,62 @@ set_location_assignment PIN_H14 -to EXT_IO[3] set_location_assignment PIN_F14 -to EXT_IO[4] set_location_assignment PIN_E10 -to EXT_IO[5] set_location_assignment PIN_D9 -to EXT_IO[6] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to EXT_IO[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to EXT_IO[1] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to EXT_IO[2] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to EXT_IO[3] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to EXT_IO[4] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to EXT_IO[5] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to EXT_IO[6] -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_TX_DATA[2] -set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET0_INT_N -set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[2] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_P[8] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_P[9] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_P[10] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_P[11] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_N[8] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_N[9] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_N[10] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_N[11] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_P[8] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_P[9] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_P[10] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_P[11] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_N[7] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_N[8] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_N[9] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_N[10] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_N[11] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_CLKIN_P2 -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_CLKIN_N2 -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_P[0] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_P[1] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_P[2] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_P[3] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_P[4] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_P[5] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_P[6] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_P[7] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_N[0] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_N[1] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_N[2] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_N[3] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_N[4] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_N[5] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_N[6] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_TX_D_N[7] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_P[0] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_P[1] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_P[2] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_P[3] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_P[4] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_P[5] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_P[6] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_P[7] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_N[0] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_N[1] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_N[2] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_N[3] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_N[4] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_N[5] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_RX_D_N[6] -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_CLKIN_P1 -set_instance_assignment -name IO_STANDARD LVDS -to HSMC_CLKIN_N1 -set_instance_assignment -name IO_STANDARD "3.0-V LVTTL" -to HSMC_CLKIN0 -set_instance_assignment -name IO_MAXIMUM_TOGGLE_RATE "0 MHz" -to HEX2 -set_instance_assignment -name IO_MAXIMUM_TOGGLE_RATE "0 MHz" -to HEX0 -set_instance_assignment -name IO_MAXIMUM_TOGGLE_RATE "0 MHz" -to HEX1 -set_instance_assignment -name IO_MAXIMUM_TOGGLE_RATE "0 MHz" -to KEY -set_instance_assignment -name IO_MAXIMUM_TOGGLE_RATE "0 MHz" -to SW -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ENET0_LINK100 -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ENET1_LINK100 -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ENETCLK_25 -set_instance_assignment -name IO_MAXIMUM_TOGGLE_RATE "0 MHz" -to HEX3[1] -set_instance_assignment -name IO_MAXIMUM_TOGGLE_RATE "0 MHz" -to HEX3[0] + +#============================================================ +# End of pin assignments by Altera University Program +#============================================================ + + + + + + + + + + + + + + + +set_global_assignment -name DEVICE_FILTER_PACKAGE FBGA +set_global_assignment -name USE_CONFIGURATION_DEVICE ON +set_global_assignment -name CYCLONEIII_CONFIGURATION_DEVICE EPCS64 + + + + + + + + + +set_global_assignment -name EDA_SIMULATION_TOOL "<None>" +set_global_assignment -name LAST_QUARTUS_VERSION "17.1.0 Lite Edition" +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" +set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top set_global_assignment -name LL_ROOT_REGION ON -section_id "Root Region" set_global_assignment -name LL_MEMBER_STATE LOCKED -section_id "Root Region" -set_instance_assignment -name FAST_INPUT_REGISTER ON -to * -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to * set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to * -set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" -set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top +set_global_assignment -name SOURCE_FILE DE2_115.qsf +set_global_assignment -name VERILOG_FILE avconf/I2C_Controller.v +set_global_assignment -name VERILOG_FILE avconf/avconf.v +set_global_assignment -name VERILOG_FILE Audio_Controller/Audio_Controller.v +set_global_assignment -name VERILOG_FILE Audio_Controller/Audio_Clock.v +set_global_assignment -name VERILOG_FILE Audio_Controller/Altera_UP_SYNC_FIFO.v +set_global_assignment -name VERILOG_FILE Audio_Controller/Altera_UP_Clock_Edge.v +set_global_assignment -name VERILOG_FILE Audio_Controller/Altera_UP_Audio_Out_Serializer.v +set_global_assignment -name VERILOG_FILE Audio_Controller/Altera_UP_Audio_In_Deserializer.v +set_global_assignment -name VERILOG_FILE Audio_Controller/Altera_UP_Audio_Bit_Counter.v set_global_assignment -name QIP_FILE otogame/synthesis/otogame.qip -set_global_assignment -name SDC_FILE timing.sdc -set_global_assignment -name SYSTEMVERILOG_FILE hexdriver.sv -set_global_assignment -name SYSTEMVERILOG_FILE input/ps2kb.sv -set_global_assignment -name SYSTEMVERILOG_FILE osu_fpga_toplevel.sv +set_global_assignment -name SYSTEMVERILOG_FILE audio_test_top.sv +set_global_assignment -name SYSTEMVERILOG_FILE audio.sv +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS ON +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/otogame.qsys b/otogame.qsys index 32161491af34c542d168b3ade4540f48eb6b7143..57a463a207eadb0127f13ead4c8e89c06927fa27 100644 --- a/otogame.qsys +++ b/otogame.qsys @@ -9,6 +9,22 @@ categories="System" /> <parameter name="bonusData"><![CDATA[bonusData { + element audio_0 + { + datum _sortIndex + { + value = "10"; + type = "int"; + } + } + element audio_0.Audio_Slave + { + datum baseAddress + { + value = "268439632"; + type = "String"; + } + } element clk_50 { datum _sortIndex @@ -53,7 +69,7 @@ { datum baseAddress { - value = "8336"; + value = "268439696"; type = "String"; } } @@ -89,6 +105,14 @@ type = "int"; } } + element ocm_null.s1 + { + datum baseAddress + { + value = "268439648"; + type = "String"; + } + } element osu_sysid { datum _sortIndex @@ -101,7 +125,7 @@ { datum baseAddress { - value = "8328"; + value = "268439688"; type = "String"; } } @@ -141,7 +165,7 @@ { datum baseAddress { - value = "6144"; + value = "268437504"; type = "String"; } } @@ -157,7 +181,7 @@ { datum baseAddress { - value = "268435456"; + value = "134217728"; type = "String"; } } @@ -173,7 +197,7 @@ { datum baseAddress { - value = "48"; + value = "268439664"; type = "String"; } } @@ -194,16 +218,16 @@ { datum baseAddress { - value = "64"; + value = "268439552"; type = "String"; } } } ]]></parameter> <parameter name="clockCrossingAdapter" value="HANDSHAKE" /> - <parameter name="device" value="EP4CE115F29C7" /> + <parameter name="device" value="EP4CE115F29C8" /> <parameter name="deviceFamily" value="Cyclone IV E" /> - <parameter name="deviceSpeedGrade" value="7" /> + <parameter name="deviceSpeedGrade" value="8" /> <parameter name="fabricMode" value="QSYS" /> <parameter name="generateLegacySim" value="false" /> <parameter name="generationId" value="0" /> @@ -219,16 +243,18 @@ <parameter name="timeStamp" value="0" /> <parameter name="useTestBenchNamingPattern" value="false" /> <instanceScript></instanceScript> + <interface name="audio" internal="audio_0.EXPORT_DATA" type="conduit" dir="end" /> <interface name="clk" internal="clk_50.clk_in" type="clock" dir="end" /> - <interface name="ps2_clk" internal="keyboard.ps2_clk" type="conduit" dir="end" /> + <interface name="ps2_clk" internal="keyboard.ps2_clk" /> <interface name="ps2_clock_conn" internal="keyboard.ps2_clock_conn" /> <interface name="ps2_conn" internal="keyboard.ps2_export" /> - <interface name="ps2_data" internal="keyboard.ps2_data" type="conduit" dir="end" /> + <interface name="ps2_data" internal="keyboard.ps2_data" /> <interface name="ps2_data_conn" internal="keyboard.ps2_data_conn" /> <interface name="reset" internal="clk_50.clk_in_reset" type="reset" dir="end" /> <interface name="sdram_clk" internal="sdram_pll.c1" type="clock" dir="start" /> <interface name="sdram_wire" internal="sdram.wire" type="conduit" dir="end" /> - <module name="clk_50" kind="clock_source" version="17.0" enabled="1"> + <module name="audio_0" kind="audio" version="1.0" enabled="1" /> + <module name="clk_50" kind="clock_source" version="17.1" enabled="1"> <parameter name="clockFrequency" value="50000000" /> <parameter name="clockFrequencyKnown" value="true" /> <parameter name="inputClockFrequency" value="0" /> @@ -237,7 +263,7 @@ <module name="flash" kind="Altera_UP_Flash_Memory_IP_Core_Avalon_Interface" - version="17.0" + version="17.1" enabled="0"> <parameter name="AUTO_CLK_CLOCK_RATE" value="50000000" /> <parameter name="AUTO_DEVICE_FAMILY" value="Cyclone IV E" /> @@ -246,7 +272,7 @@ <module name="jtag_uart" kind="altera_avalon_jtag_uart" - version="17.0" + version="17.1" enabled="1"> <parameter name="allowMultipleConnections" value="false" /> <parameter name="avalonSpec" value="2.0" /> @@ -262,11 +288,11 @@ <parameter name="writeBufferDepth" value="64" /> <parameter name="writeIRQThreshold" value="8" /> </module> - <module name="keyboard" kind="ps2kb" version="1.0" enabled="1" /> + <module name="keyboard" kind="ps2kb" version="1.0" enabled="0" /> <module name="ocm_null" kind="altera_avalon_onchip_memory2" - version="17.0" + version="17.1" enabled="1"> <parameter name="allowInSystemMemoryContentEditor" value="false" /> <parameter name="autoInitializationFileName">$${FILENAME}_ocm_null</parameter> @@ -298,7 +324,7 @@ <module name="osu_sysid" kind="altera_avalon_sysid_qsys" - version="17.0" + version="17.1" enabled="1"> <parameter name="id" value="1869837601" /> </module> @@ -312,7 +338,7 @@ <parameter name="cpuReset" value="false" /> <parameter name="customInstSlavesSystemInfo" value="<info/>" /> <parameter name="dataAddrWidth" value="29" /> - <parameter name="dataSlaveMapParam"><![CDATA[<address-map><slave name='ocm_null.s1' start='0x0' end='0x10' /><slave name='sdram_pll.pll_slave' start='0x30' end='0x40' /><slave name='timer.s1' start='0x40' end='0x60' /><slave name='proc_main.jtag_debug_module' start='0x1800' end='0x2000' /><slave name='osu_sysid.control_slave' start='0x2088' end='0x2090' /><slave name='jtag_uart.avalon_jtag_slave' start='0x2090' end='0x2098' /><slave name='keyboard.key_events' start='0x5000' end='0x5010' /><slave name='sdram.s1' start='0x10000000' end='0x18000000' /></address-map>]]></parameter> + <parameter name="dataSlaveMapParam"><![CDATA[<address-map><slave name='sdram.s1' start='0x8000000' end='0x10000000' /><slave name='proc_main.jtag_debug_module' start='0x10000800' end='0x10001000' /><slave name='timer.s1' start='0x10001000' end='0x10001020' /><slave name='audio_0.Audio_Slave' start='0x10001050' end='0x10001060' /><slave name='ocm_null.s1' start='0x10001060' end='0x10001070' /><slave name='sdram_pll.pll_slave' start='0x10001070' end='0x10001080' /><slave name='osu_sysid.control_slave' start='0x10001088' end='0x10001090' /><slave name='jtag_uart.avalon_jtag_slave' start='0x10001090' end='0x10001098' /></address-map>]]></parameter> <parameter name="dcache_bursts" value="false" /> <parameter name="dcache_lineSize" value="32" /> <parameter name="dcache_numTCDM" value="0" /> @@ -339,7 +365,7 @@ <parameter name="icache_tagramBlockType" value="Automatic" /> <parameter name="impl" value="Tiny" /> <parameter name="instAddrWidth" value="29" /> - <parameter name="instSlaveMapParam"><![CDATA[<address-map><slave name='ocm_null.s1' start='0x0' end='0x10' /><slave name='sdram_pll.pll_slave' start='0x30' end='0x40' /><slave name='proc_main.jtag_debug_module' start='0x1800' end='0x2000' /><slave name='osu_sysid.control_slave' start='0x2088' end='0x2090' /><slave name='sdram.s1' start='0x10000000' end='0x18000000' /></address-map>]]></parameter> + <parameter name="instSlaveMapParam"><![CDATA[<address-map><slave name='sdram.s1' start='0x8000000' end='0x10000000' /><slave name='proc_main.jtag_debug_module' start='0x10000800' end='0x10001000' /><slave name='ocm_null.s1' start='0x10001060' end='0x10001070' /><slave name='sdram_pll.pll_slave' start='0x10001070' end='0x10001080' /><slave name='osu_sysid.control_slave' start='0x10001088' end='0x10001090' /></address-map>]]></parameter> <parameter name="internalIrqMaskSystemInfo" value="3" /> <parameter name="manuallyAssignCpuID" value="true" /> <parameter name="mmu_TLBMissExcOffset" value="0" /> @@ -432,7 +458,7 @@ <module name="sdram" kind="altera_avalon_new_sdram_controller" - version="17.0" + version="17.1" enabled="1"> <parameter name="TAC" value="5.5" /> <parameter name="TMRD" value="3" /> @@ -458,7 +484,7 @@ <parameter name="registerDataIn" value="true" /> <parameter name="rowWidth" value="13" /> </module> - <module name="sdram_pll" kind="altpll" version="17.0" enabled="1"> + <module name="sdram_pll" kind="altpll" version="17.1" enabled="1"> <parameter name="AUTO_DEVICE_FAMILY" value="Cyclone IV E" /> <parameter name="AUTO_INCLK_INTERFACE_CLOCK_RATE" value="50000000" /> <parameter name="AVALON_USE_SEPARATE_SYSCLK" value="NO" /> @@ -625,7 +651,7 @@ <parameter name="WIDTH_CLOCK" value="5" /> <parameter name="WIDTH_PHASECOUNTERSELECT" value="" /> </module> - <module name="timer" kind="altera_avalon_timer" version="17.0" enabled="1"> + <module name="timer" kind="altera_avalon_timer" version="17.1" enabled="1"> <parameter name="alwaysRun" value="false" /> <parameter name="counterSize" value="32" /> <parameter name="fixedPeriod" value="false" /> @@ -639,25 +665,34 @@ </module> <connection kind="avalon" - version="17.0" + version="17.1" + start="proc_main.data_master" + end="audio_0.Audio_Slave"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0x10001050" /> + <parameter name="defaultConnection" value="false" /> + </connection> + <connection + kind="avalon" + version="17.1" start="proc_main.data_master" end="jtag_uart.avalon_jtag_slave"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x2090" /> + <parameter name="baseAddress" value="0x10001090" /> <parameter name="defaultConnection" value="false" /> </connection> <connection kind="avalon" - version="17.0" + version="17.1" start="proc_main.data_master" end="osu_sysid.control_slave"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x2088" /> + <parameter name="baseAddress" value="0x10001088" /> <parameter name="defaultConnection" value="false" /> </connection> <connection kind="avalon" - version="17.0" + version="17.1" start="proc_main.data_master" end="flash.flash_data"> <parameter name="arbitrationPriority" value="1" /> @@ -666,7 +701,7 @@ </connection> <connection kind="avalon" - version="17.0" + version="17.1" start="proc_main.data_master" end="flash.flash_erase_control"> <parameter name="arbitrationPriority" value="1" /> @@ -675,16 +710,16 @@ </connection> <connection kind="avalon" - version="17.0" + version="17.1" start="proc_main.data_master" end="proc_main.jtag_debug_module"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x1800" /> + <parameter name="baseAddress" value="0x10000800" /> <parameter name="defaultConnection" value="false" /> </connection> <connection kind="avalon" - version="17.0" + version="17.1" start="proc_main.data_master" end="keyboard.key_events"> <parameter name="arbitrationPriority" value="1" /> @@ -693,52 +728,52 @@ </connection> <connection kind="avalon" - version="17.0" + version="17.1" start="proc_main.data_master" end="sdram_pll.pll_slave"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x0030" /> + <parameter name="baseAddress" value="0x10001070" /> <parameter name="defaultConnection" value="false" /> </connection> <connection kind="avalon" - version="17.0" + version="17.1" start="proc_main.data_master" end="ocm_null.s1"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x0000" /> + <parameter name="baseAddress" value="0x10001060" /> <parameter name="defaultConnection" value="false" /> </connection> <connection kind="avalon" - version="17.0" + version="17.1" start="proc_main.data_master" end="sdram.s1"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x10000000" /> + <parameter name="baseAddress" value="0x08000000" /> <parameter name="defaultConnection" value="false" /> </connection> <connection kind="avalon" - version="17.0" + version="17.1" start="proc_main.data_master" end="timer.s1"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x0040" /> + <parameter name="baseAddress" value="0x10001000" /> <parameter name="defaultConnection" value="false" /> </connection> <connection kind="avalon" - version="17.0" + version="17.1" start="proc_main.instruction_master" end="osu_sysid.control_slave"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x2088" /> + <parameter name="baseAddress" value="0x10001088" /> <parameter name="defaultConnection" value="false" /> </connection> <connection kind="avalon" - version="17.0" + version="17.1" start="proc_main.instruction_master" end="flash.flash_data"> <parameter name="arbitrationPriority" value="1" /> @@ -747,110 +782,116 @@ </connection> <connection kind="avalon" - version="17.0" + version="17.1" start="proc_main.instruction_master" end="proc_main.jtag_debug_module"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x1800" /> + <parameter name="baseAddress" value="0x10000800" /> <parameter name="defaultConnection" value="false" /> </connection> <connection kind="avalon" - version="17.0" + version="17.1" start="proc_main.instruction_master" end="sdram_pll.pll_slave"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x0030" /> + <parameter name="baseAddress" value="0x10001070" /> <parameter name="defaultConnection" value="false" /> </connection> <connection kind="avalon" - version="17.0" + version="17.1" start="proc_main.instruction_master" end="ocm_null.s1"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x0000" /> + <parameter name="baseAddress" value="0x10001060" /> <parameter name="defaultConnection" value="false" /> </connection> <connection kind="avalon" - version="17.0" + version="17.1" start="proc_main.instruction_master" end="sdram.s1"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x10000000" /> + <parameter name="baseAddress" value="0x08000000" /> <parameter name="defaultConnection" value="false" /> </connection> - <connection kind="clock" version="17.0" start="sdram_pll.c0" end="sdram.clk" /> - <connection kind="clock" version="17.0" start="clk_50.clk" end="osu_sysid.clk" /> - <connection kind="clock" version="17.0" start="clk_50.clk" end="proc_main.clk" /> - <connection kind="clock" version="17.0" start="clk_50.clk" end="jtag_uart.clk" /> - <connection kind="clock" version="17.0" start="clk_50.clk" end="timer.clk" /> - <connection kind="clock" version="17.0" start="clk_50.clk" end="flash.clk" /> - <connection kind="clock" version="17.0" start="clk_50.clk" end="ocm_null.clk1" /> - <connection kind="clock" version="17.0" start="clk_50.clk" end="keyboard.clock" /> + <connection kind="clock" version="17.1" start="sdram_pll.c0" end="sdram.clk" /> + <connection kind="clock" version="17.1" start="clk_50.clk" end="audio_0.CLK" /> + <connection kind="clock" version="17.1" start="clk_50.clk" end="osu_sysid.clk" /> + <connection kind="clock" version="17.1" start="clk_50.clk" end="proc_main.clk" /> + <connection kind="clock" version="17.1" start="clk_50.clk" end="jtag_uart.clk" /> + <connection kind="clock" version="17.1" start="clk_50.clk" end="timer.clk" /> + <connection kind="clock" version="17.1" start="clk_50.clk" end="flash.clk" /> + <connection kind="clock" version="17.1" start="clk_50.clk" end="ocm_null.clk1" /> + <connection kind="clock" version="17.1" start="clk_50.clk" end="keyboard.clock" /> <connection kind="clock" - version="17.0" + version="17.1" start="clk_50.clk" end="sdram_pll.inclk_interface" /> <connection kind="interrupt" - version="17.0" + version="17.1" start="proc_main.d_irq" end="jtag_uart.irq"> <parameter name="irqNumber" value="0" /> </connection> <connection kind="interrupt" - version="17.0" + version="17.1" start="proc_main.d_irq" end="timer.irq"> <parameter name="irqNumber" value="1" /> </connection> <connection kind="reset" - version="17.0" + version="17.1" + start="clk_50.clk_reset" + end="audio_0.RESET" /> + <connection + kind="reset" + version="17.1" start="clk_50.clk_reset" end="sdram_pll.inclk_interface_reset" /> <connection kind="reset" - version="17.0" + version="17.1" start="clk_50.clk_reset" end="sdram.reset" /> <connection kind="reset" - version="17.0" + version="17.1" start="clk_50.clk_reset" end="osu_sysid.reset" /> <connection kind="reset" - version="17.0" + version="17.1" start="clk_50.clk_reset" end="jtag_uart.reset" /> <connection kind="reset" - version="17.0" + version="17.1" start="clk_50.clk_reset" end="timer.reset" /> <connection kind="reset" - version="17.0" + version="17.1" start="clk_50.clk_reset" end="flash.reset" /> <connection kind="reset" - version="17.0" + version="17.1" start="clk_50.clk_reset" end="keyboard.reset" /> <connection kind="reset" - version="17.0" + version="17.1" start="clk_50.clk_reset" end="ocm_null.reset1" /> <connection kind="reset" - version="17.0" + version="17.1" start="clk_50.clk_reset" end="proc_main.reset_n" /> <interconnectRequirement for="$system" name="qsys_mm.clockCrossingAdapter" value="HANDSHAKE" /> diff --git a/software/oto_audio/.cproject b/software/oto_audio/.cproject new file mode 100644 index 0000000000000000000000000000000000000000..8fc3079f0937f96b139b3fabad671ffe16d391e9 --- /dev/null +++ b/software/oto_audio/.cproject @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> + <storageModule moduleId="org.eclipse.cdt.core.settings"> + <buildSystem id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1940785850"> + <storageModule id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1940785850" moduleId="org.eclipse.cdt.core.settings"/> + </buildSystem> + <cconfiguration id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1940785850"> + <storageModule moduleId="cdtBuildSystem" version="4.0.0"> + <configuration buildProperties="" description="" id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1940785850" name="Nios II" parent="org.eclipse.cdt.build.core.prefbase.cfg"> + <folderInfo id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1940785850." name="/" resourcePath=""> + <toolChain id="altera.nios2.mingw.gcc4.522164900" name="MinGW Nios II GCC4" superClass="altera.nios2.mingw.gcc4"> + <targetPlatform id="altera.nios2.mingw.gcc4.1772983844" name="Nios II" superClass="altera.nios2.mingw.gcc4"/> + <builder buildPath="${workspace_loc://oto_audio}" id="altera.tool.gnu.builder.mingw.2056654465" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="altera.tool.gnu.builder.mingw"/> + <tool id="altera.tool.gnu.c.compiler.mingw.1013930879" name="Nios II GCC C Compiler" superClass="altera.tool.gnu.c.compiler.mingw"> + <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1715282552" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> + </tool> + <tool id="altera.tool.gnu.cpp.compiler.mingw.56088267" name="Nios II GCC C++ Compiler" superClass="altera.tool.gnu.cpp.compiler.mingw"> + <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.833570515" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> + </tool> + <tool id="altera.tool.gnu.archiver.mingw.181735596" name="Nios II GCC Archiver" superClass="altera.tool.gnu.archiver.mingw"/> + <tool id="altera.tool.gnu.c.linker.mingw.406940735" name="Nios II GCC C Linker" superClass="altera.tool.gnu.c.linker.mingw"/> + <tool id="altera.tool.gnu.assembler.mingw.1802949496" name="Nios II GCC Assembler" superClass="altera.tool.gnu.assembler.mingw"> + <inputType id="cdt.managedbuild.tool.gnu.assembler.input.17920711" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> + </tool> + </toolChain> + </folderInfo> + </configuration> + </storageModule> + <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1940785850" moduleId="org.eclipse.cdt.core.settings" name="Nios II"> + <externalSettings/> + <extensions> + <extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/> + <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> + <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + </extensions> + </storageModule> + <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> + </cconfiguration> + </storageModule> + <storageModule moduleId="cdtBuildSystem" version="4.0.0"> + <project id="oto_audio.null.177029163" name="oto_audio"/> + </storageModule> + <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> + <storageModule moduleId="scannerConfiguration"> + <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> + <scannerConfigBuildInfo instanceId="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1940785850;preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1940785850.;altera.tool.gnu.cpp.compiler.mingw.56088267;cdt.managedbuild.tool.gnu.cpp.compiler.input.833570515"> + <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> + </scannerConfigBuildInfo> + <scannerConfigBuildInfo instanceId="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1940785850;preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1940785850.;altera.tool.gnu.c.compiler.mingw.1013930879;cdt.managedbuild.tool.gnu.c.compiler.input.1715282552"> + <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> + </scannerConfigBuildInfo> + </storageModule> + <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"> + <buildTargets> + <target name="mem_init_install" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> + <buildCommand>make</buildCommand> + <buildArguments/> + <buildTarget>mem_init_install</buildTarget> + <stopOnError>true</stopOnError> + <useDefaultCommand>false</useDefaultCommand> + <runAllBuilders>false</runAllBuilders> + </target> + <target name="mem_init_generate" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> + <buildCommand>make</buildCommand> + <buildArguments/> + <buildTarget>mem_init_generate</buildTarget> + <stopOnError>true</stopOnError> + <useDefaultCommand>false</useDefaultCommand> + <runAllBuilders>false</runAllBuilders> + </target> + <target name="help" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> + <buildCommand>make</buildCommand> + <buildArguments/> + <buildTarget>help</buildTarget> + <stopOnError>true</stopOnError> + <useDefaultCommand>false</useDefaultCommand> + <runAllBuilders>false</runAllBuilders> + </target> + </buildTargets> + </storageModule> +</cproject> diff --git a/software/oto_audio/.project b/software/oto_audio/.project new file mode 100644 index 0000000000000000000000000000000000000000..aad0157b55a3822bac26c355f23349f6f88d9300 --- /dev/null +++ b/software/oto_audio/.project @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>oto_audio</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>com.altera.sbtgui.project.makefileBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>com.altera.sbtgui.project.makefileBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name> + <triggers>clean,full,incremental,</triggers> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name> + <triggers>full,incremental,</triggers> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.cdt.core.cnature</nature> + <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> + <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> + <nature>org.eclipse.cdt.core.ccnature</nature> + <nature>com.altera.sbtgui.project.SBTGUINature</nature> + <nature>com.altera.sbtgui.project.SBTGUIAppNature</nature> + <nature>com.altera.sbtgui.project.SBTGUIManagedNature</nature> + </natures> +</projectDescription> diff --git a/software/oto_audio/Makefile b/software/oto_audio/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..f9f77f4222861356aece398ef2fe9f214208d930 --- /dev/null +++ b/software/oto_audio/Makefile @@ -0,0 +1,1082 @@ +#------------------------------------------------------------------------------ +# VARIABLES APPENDED TO BY INCLUDED MAKEFILE FRAGMENTS +#------------------------------------------------------------------------------ + +# List of include directories for -I compiler option (-I added when used). +# Includes the BSP. +ALT_INCLUDE_DIRS := + +# List of library directories for -L linker option (-L added when used). +# Includes the BSP. +ALT_LIBRARY_DIRS := + +# List of library names for -l linker option (-l added when used). +# Includes the BSP. +ALT_LIBRARY_NAMES := + +# List of library names for -msys-lib linker option (-msys-lib added when used). +# These are libraries that might be located in the BSP and depend on the BSP +# library, or vice versa +ALT_BSP_DEP_LIBRARY_NAMES := + +# List of dependencies for the linker. This is usually the full pathname +# of each library (*.a) file. +# Includes the BSP. +ALT_LDDEPS := + +# List of root library directories that support running make to build them. +# Includes the BSP and any ALT libraries. +MAKEABLE_LIBRARY_ROOT_DIRS := + +# Generic flags passed to the compiler for different types of input files. +ALT_CFLAGS := +ALT_CXXFLAGS := +ALT_CPPFLAGS := +ALT_ASFLAGS := +ALT_LDFLAGS := + + +#------------------------------------------------------------------------------ +# The adjust-path macro +# +# If COMSPEC/ComSpec is defined, Make is launched from Windows through +# Cygwin. The adjust-path macro converts absolute windows paths into +# unix style paths (Example: c:/dir -> /c/dir). This will ensture +# paths are readable by GNU Make. +# +# If COMSPEC/ComSpec is not defined, Make is launched from linux, and no +# adjustment is necessary +# +#------------------------------------------------------------------------------ + +ifndef COMSPEC +ifdef ComSpec +COMSPEC = $(ComSpec) +endif # ComSpec +endif # COMSPEC + +ifdef COMSPEC # if Windows OS + +ifeq ($(MAKE_VERSION),3.81) +# +# adjust-path/adjust-path-mixed for Mingw Gnu Make on Windows +# +# Example Usage: +# $(call adjust-path,c:/aaa/bbb) => /c/aaa/bbb +# $(call adjust-path-mixed,/c/aaa/bbb) => c:/aaa/bbb +# $(call adjust-path-mixed,/cygdrive/c/aaa/bbb) => c:/aaa/bbb +# + +# +# adjust-path +# - converts back slash characters into forward slashes +# - if input arg ($1) is an empty string then return the empty string +# - if input arg ($1) does not contain the string ":/", then return input arg +# - using sed, convert mixed path [c:/...] into mingw path [/c/...] +define adjust-path +$(strip \ +$(if $1,\ +$(if $(findstring :/,$(subst \,/,$1)),\ +$(shell echo $(subst \,/,$1) | sed -e 's,^\([a-zA-Z]\):/,/\1/,'),\ +$(subst \,/,$1)))) +endef + +# +# adjust-path-mixed +# - converts back slash characters into forward slashes +# - if input arg ($1) is an empty string then return the empty string +# - if input arg ($1) does not begin with a forward slash '/' char, then +# return input arg +# - using sed, convert mingw path [/c/...] or cygwin path [/c/cygdrive/...] +# into a mixed path [c:/...] +define adjust-path-mixed +$(strip \ +$(if $1,\ +$(if $(findstring $(subst \,/,$1),$(patsubst /%,%,$(subst \,/,$1))),\ +$(subst \,/,$1),\ +$(shell echo $(subst \,/,$1) | sed -e 's,^/cygdrive/\([a-zA-Z]\)/,\1:/,' -e 's,^/\([a-zA-Z]\)/,\1:/,')))) +endef + +else # MAKE_VERSION != 3.81 (MAKE_VERSION == 3.80 or MAKE_VERSION == 3.79) +# +# adjust-path for Cygwin Gnu Make +# $(call adjust-path,c:/aaa/bbb) = /cygdrive/c/aaa/bbb +# $(call adjust-path-mixed,/cygdrive/c/aaa/bbb) = c:/aaa/bbb +# +adjust-path = $(if $1,$(shell cygpath -u "$1"),) +adjust-path-mixed = $(if $1,$(shell cygpath -m "$1"),) +endif + +else # !COMSPEC + +adjust-path = $1 +adjust-path-mixed = $1 + +endif # COMSPEC + + +#vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv +# GENERATED SETTINGS START v +#vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + +#START GENERATED +ACTIVE_BUILD_CONFIG := default +BUILD_CONFIGS := default + +# The following TYPE comment allows tools to identify the 'type' of target this +# makefile is associated with. +# TYPE: APP_MAKEFILE + +# This following VERSION comment indicates the version of the tool used to +# generate this makefile. A makefile variable is provided for VERSION as well. +# ACDS_VERSION: 17.1 +ACDS_VERSION := 17.1 + +# This following BUILD_NUMBER comment indicates the build number of the tool +# used to generate this makefile. +# BUILD_NUMBER: 590 + +# Define path to the application ELF. +# It may be used by the makefile fragments so is defined before including them. +# +ELF := oto_audio.elf + +# Paths to C, C++, and assembly source files. +C_SRCS := main.c +CXX_SRCS := +ASM_SRCS := + + +# Path to root of object file tree. +OBJ_ROOT_DIR := obj + +# Options to control objdump. +CREATE_OBJDUMP := 1 +OBJDUMP_INCLUDE_SOURCE := 1 +OBJDUMP_FULL_CONTENTS := 0 + +# Options to enable/disable optional files. +CREATE_ELF_DERIVED_FILES := 0 +CREATE_LINKER_MAP := 1 + +# Common arguments for ALT_CFLAGSs +APP_CFLAGS_DEFINED_SYMBOLS := +APP_CFLAGS_UNDEFINED_SYMBOLS := +APP_CFLAGS_OPTIMIZATION := -O0 +APP_CFLAGS_DEBUG_LEVEL := -g +APP_CFLAGS_WARNINGS := -Wall +APP_CFLAGS_USER_FLAGS := + +APP_ASFLAGS_USER := +APP_LDFLAGS_USER := + +# Linker options that have default values assigned later if not +# assigned here. +LINKER_SCRIPT := +CRT0 := +SYS_LIB := + +# Define path to the root of the BSP. +BSP_ROOT_DIR := ../oto_audio_bsp/ + +# List of application specific include directories, library directories and library names +APP_INCLUDE_DIRS := +APP_LIBRARY_DIRS := +APP_LIBRARY_NAMES := + +# Pre- and post- processor settings. +BUILD_PRE_PROCESS := +BUILD_POST_PROCESS := + +QUARTUS_PROJECT_DIR := ../../ + + +#END GENERATED + +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# GENERATED SETTINGS END ^ +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +#------------------------------------------------------------------------------ +# DEFAULT TARGET +#------------------------------------------------------------------------------ + +# Define the variable used to echo output if not already defined. +ifeq ($(ECHO),) +ECHO := echo +endif + +# Put "all" rule before included makefile fragments because they may +# define rules and we don't want one of those to become the default rule. +.PHONY : all + +all: + @$(ECHO) [$(APP_NAME) build complete] + +all : build_pre_process libs app build_post_process + + +#------------------------------------------------------------------------------ +# VARIABLES DEPENDENT ON GENERATED CONTENT +#------------------------------------------------------------------------------ + +# Define object file directory per build configuration +CONFIG_OBJ_DIR := $(OBJ_ROOT_DIR)/$(ACTIVE_BUILD_CONFIG) + +ifeq ($(BSP_ROOT_DIR),) +$(error Edit Makefile and provide a value for BSP_ROOT_DIR) +endif + +ifeq ($(wildcard $(BSP_ROOT_DIR)),) +$(error BSP directory does not exist: $(BSP_ROOT_DIR)) +endif + +# Define absolute path to the root of the BSP. +ABS_BSP_ROOT_DIR := $(call adjust-path-mixed,$(shell cd "$(BSP_ROOT_DIR)"; pwd)) + +# Include makefile fragments. Define variable ALT_LIBRARY_ROOT_DIR before +# including each makefile fragment so that it knows the path to itself. +BSP_INCLUDE_FILE := $(BSP_ROOT_DIR)/public.mk +ALT_LIBRARY_ROOT_DIR := $(BSP_ROOT_DIR) +include $(BSP_INCLUDE_FILE) +# C2H will need this to touch the BSP public.mk and avoid the sopc file +# out-of-date error during a BSP make +ABS_BSP_INCLUDE_FILE := $(ABS_BSP_ROOT_DIR)/public.mk + + +ifneq ($(WARNING.SMALL_STACK_SIZE),) +# This WARNING is here to protect you from unknowingly using a very small stack +# If the warning is set, increase your stack size or enable the BSP small stack +# setting to eliminate the warning +$(warning WARNING: $(WARNING.SMALL_STACK_SIZE)) +endif + +# If the BSP public.mk indicates that ALT_SIM_OPTIMIZE is set, rename the ELF +# by prefixing it with RUN_ON_HDL_SIMULATOR_ONLY_. +ifneq ($(filter -DALT_SIM_OPTIMIZE,$(ALT_CPPFLAGS)),) +ELF := RUN_ON_HDL_SIMULATOR_ONLY_$(ELF) +endif + +# If the BSP public.mk indicates that ALT_PROVIDE_GMON is set, add option to +# download_elf target +ifneq ($(filter -DALT_PROVIDE_GMON,$(ALT_CPPFLAGS)),) +GMON_OUT_FILENAME := gmon.out +WRITE_GMON_OPTION := --write-gmon $(GMON_OUT_FILENAME) +endif + +# Name of ELF application. +APP_NAME := $(basename $(ELF)) + +# Set to defaults if variables not already defined in settings. +ifeq ($(LINKER_SCRIPT),) +LINKER_SCRIPT := $(BSP_LINKER_SCRIPT) +endif +ifeq ($(CRT0),) +CRT0 := $(BSP_CRT0) +endif +ifeq ($(SYS_LIB),) +SYS_LIB := $(BSP_SYS_LIB) +endif + +OBJDUMP_NAME := $(APP_NAME).objdump +OBJDUMP_FLAGS := --disassemble --syms --all-header +ifeq ($(OBJDUMP_INCLUDE_SOURCE),1) +OBJDUMP_FLAGS += --source +endif +ifeq ($(OBJDUMP_FULL_CONTENTS),1) +OBJDUMP_FLAGS += --full-contents +endif + +# Create list of linker dependencies (*.a files). +APP_LDDEPS := $(ALT_LDDEPS) $(LDDEPS) + +# Take lists and add required prefixes. +APP_INC_DIRS := $(addprefix -I, $(ALT_INCLUDE_DIRS) $(APP_INCLUDE_DIRS) $(INC_DIRS)) +ASM_INC_PREFIX := -Wa,-I +APP_ASM_INC_DIRS := $(addprefix $(ASM_INC_PREFIX), $(ALT_INCLUDE_DIRS) $(APP_INCLUDE_DIRS) $(INC_DIRS)) +APP_LIB_DIRS := $(addprefix -L, $(ALT_LIBRARY_DIRS) $(APP_LIBRARY_DIRS) $(LIB_DIRS)) +APP_LIBS := $(addprefix -l, $(ALT_LIBRARY_NAMES) $(APP_LIBRARY_NAMES) $(LIBS)) + +ifneq ($(AVOID_NIOS2_GCC3_OPTIONS),) + +# +# Avoid Nios II GCC 3.X options. +# + +# Detect if small newlib C library is requested. +# If yes, remove the -msmallc option because it is +# now handled by other means. +ifneq ($(filter -msmallc,$(ALT_LDFLAGS)),) + ALT_LDFLAGS := $(filter-out -msmallc,$(ALT_LDFLAGS)) + ALT_C_LIBRARY := smallc +else + ALT_C_LIBRARY := c +endif + +# Put each BSP dependent library in a group to avoid circular dependencies. +APP_BSP_DEP_LIBS := $(foreach l,$(ALT_BSP_DEP_LIBRARY_NAMES),-Wl,--start-group -l$(ALT_C_LIBRARY) -lgcc -lm -l$(l) -Wl,--end-group) + +else # !AVOID_NIOS2_GCC3_OPTIONS + +# +# Use Nios II GCC 3.X options. +# +ALT_BSP_DEP_LIBRARY_NAMES += $(ALT_BSP_DEP_LIBRARY_NAMES) m +APP_BSP_DEP_LIBS := $(addprefix -msys-lib=, $(ALT_BSP_DEP_LIBRARY_NAMES)) + +endif # !AVOID_NIOS2_GCC3_OPTIONS + +# Arguments for the C preprocessor, C/C++ compiler, assembler, and linker. +APP_CFLAGS := $(APP_CFLAGS_DEFINED_SYMBOLS) \ + $(APP_CFLAGS_UNDEFINED_SYMBOLS) \ + $(APP_CFLAGS_OPTIMIZATION) \ + $(APP_CFLAGS_DEBUG_LEVEL) \ + $(APP_CFLAGS_WARNINGS) \ + $(APP_CFLAGS_USER_FLAGS) \ + $(ALT_CFLAGS) \ + $(CFLAGS) + +# Arguments only for the C++ compiler. +APP_CXXFLAGS := $(ALT_CXXFLAGS) $(CXXFLAGS) + +# Arguments only for the C preprocessor. +# Prefix each include directory with -I. +APP_CPPFLAGS := $(APP_INC_DIRS) \ + $(ALT_CPPFLAGS) \ + $(CPPFLAGS) + +# Arguments only for the assembler. +APP_ASFLAGS := $(APP_ASM_INC_DIRS) \ + $(ALT_ASFLAGS) \ + $(APP_ASFLAGS_USER) \ + $(ASFLAGS) + +# Arguments only for the linker. +APP_LDFLAGS := $(APP_LDFLAGS_USER) + +ifneq ($(LINKER_SCRIPT),) +APP_LDFLAGS += -T'$(LINKER_SCRIPT)' +endif + +ifneq ($(AVOID_NIOS2_GCC3_OPTIONS),) + +# Avoid Nios II GCC 3.x options. +ifneq ($(CRT0),) +APP_LDFLAGS += $(CRT0) +endif + +# The equivalent of the -msys-lib option is provided +# by the GROUP() command in the linker script. +# Note this means the SYS_LIB variable is now ignored. + +else # !AVOID_NIOS2_GCC3_OPTIONS + +# Use Nios II GCC 3.x options. +ifneq ($(CRT0),) +APP_LDFLAGS += -msys-crt0='$(CRT0)' +endif +ifneq ($(SYS_LIB),) +APP_LDFLAGS += -msys-lib=$(SYS_LIB) +endif + +endif # !AVOID_NIOS2_GCC3_OPTIONS + +APP_LDFLAGS += \ + $(APP_LIB_DIRS) \ + $(ALT_LDFLAGS) \ + $(LDFLAGS) + +LINKER_MAP_NAME := $(APP_NAME).map +ifeq ($(CREATE_LINKER_MAP), 1) +APP_LDFLAGS += -Wl,-Map=$(LINKER_MAP_NAME) +endif + +# QUARTUS_PROJECT_DIR and SOPC_NAME need to be defined if you want the +# mem_init_install target of the mem_init.mk (located in the associated BSP) +# to know how to copy memory initialization files (e.g. .dat, .hex) into +# directories required for Quartus compilation or RTL simulation. + +# Defining QUARTUS_PROJECT_DIR causes mem_init_install to copy memory +# initialization files into your Quartus project directory. This is required +# to provide the initial memory contents of FPGA memories that can be +# initialized by the programming file (.sof) or Hardcopy ROMs. It is also used +# for VHDL simulation of on-chip memories. + +# Defining SOPC_NAME causes the mem_init_install target to copy memory +# initialization files into your RTL simulation directory. This is required +# to provide the initial memory contents of all memories that can be +# initialized by RTL simulation. This variable should be set to the same name +# as your SOPC Builder system name. For example, if you have a system called +# "foo.sopc", this variable should be set to "foo". + +# If SOPC_NAME is not set and QUARTUS_PROJECT_DIR is set, then derive SOPC_NAME. +ifeq ($(SOPC_NAME),) +ifneq ($(QUARTUS_PROJECT_DIR),) +SOPC_NAME := $(basename $(notdir $(wildcard $(QUARTUS_PROJECT_DIR)/*.sopcinfo))) +endif +endif + +# Defining JDI_FILE is required to specify the JTAG Debug Information File +# path. This file is generated by Quartus, and is needed along with the +# .sopcinfo file to resolve processor instance ID's from names in a multi-CPU +# systems. For multi-CPU systems, the processor instance ID is used to select +# from multiple CPU's during ELF download. + +# Both JDI_FILE and SOPCINFO_FILE are provided by the BSP if they found during +# BSP creation. If JDI_FILE is not set and QUARTUS_PROJECT_DIR is set, then +# derive JDI_FILE. We do not attempt to derive SOPCINFO_FILE since there may be +# multiple .sopcinfo files in a Quartus project. +ifeq ($(JDI_FILE),) +ifneq ($(QUARTUS_PROJECT_DIR),) +JDI_FILE := $(firstword $(wildcard $(QUARTUS_PROJECT_DIR)/output_files/*.jdi) $(wildcard $(QUARTUS_PROJECT_DIR)/*.jdi)) +endif +endif + +# Path to root runtime directory used for hdl simulation +RUNTIME_ROOT_DIR := $(CONFIG_OBJ_DIR)/runtime + + + +#------------------------------------------------------------------------------ +# MAKEFILE INCLUDES DEPENDENT ON GENERATED CONTENT +#------------------------------------------------------------------------------ +# mem_init.mk is a generated makefile fragment. This file defines all targets +# used to generate HDL initialization simulation files and pre-initialized +# onchip memory files. +MEM_INIT_FILE := $(BSP_ROOT_DIR)/mem_init.mk +include $(MEM_INIT_FILE) + +# Create list of object files to be built using the list of source files. +# The source file hierarchy is preserved in the object tree. +# The supported file extensions are: +# +# .c - for C files +# .cxx .cc .cpp - for C++ files +# .S .s - for assembler files +# +# Handle source files specified by --src-dir & --src-rdir differently, to +# save some processing time in calling the adjust-path macro. + +OBJ_LIST_C := $(patsubst %.c,%.o,$(filter %.c,$(C_SRCS))) +OBJ_LIST_CPP := $(patsubst %.cpp,%.o,$(filter %.cpp,$(CXX_SRCS))) +OBJ_LIST_CXX := $(patsubst %.cxx,%.o,$(filter %.cxx,$(CXX_SRCS))) +OBJ_LIST_CC := $(patsubst %.cc,%.o,$(filter %.cc,$(CXX_SRCS))) +OBJ_LIST_S := $(patsubst %.S,%.o,$(filter %.S,$(ASM_SRCS))) +OBJ_LIST_SS := $(patsubst %.s,%.o,$(filter %.s,$(ASM_SRCS))) + +OBJ_LIST := $(sort $(OBJ_LIST_C) $(OBJ_LIST_CPP) $(OBJ_LIST_CXX) \ + $(OBJ_LIST_CC) $(OBJ_LIST_S) $(OBJ_LIST_SS)) + +SDIR_OBJ_LIST_C := $(patsubst %.c,%.o,$(filter %.c,$(SDIR_C_SRCS))) +SDIR_OBJ_LIST_CPP := $(patsubst %.cpp,%.o,$(filter %.cpp,$(SDIR_CXX_SRCS))) +SDIR_OBJ_LIST_CXX := $(patsubst %.cxx,%.o,$(filter %.cxx,$(SDIR_CXX_SRCS))) +SDIR_OBJ_LIST_CC := $(patsubst %.cc,%.o,$(filter %.cc,$(SDIR_CXX_SRCS))) +SDIR_OBJ_LIST_S := $(patsubst %.S,%.o,$(filter %.S,$(SDIR_ASM_SRCS))) +SDIR_OBJ_LIST_SS := $(patsubst %.s,%.o,$(filter %.s,$(SDIR_ASM_SRCS))) + +SDIR_OBJ_LIST := $(sort $(SDIR_OBJ_LIST_C) $(SDIR_OBJ_LIST_CPP) \ + $(SDIR_OBJ_LIST_CXX) $(SDIR_OBJ_LIST_CC) $(SDIR_OBJ_LIST_S) \ + $(SDIR_OBJ_LIST_SS)) + +# Relative-pathed objects that being with "../" are handled differently. +# +# Regular objects are created as +# $(CONFIG_OBJ_DIR)/<path>/<filename>.o +# where the path structure is maintained under the obj directory. This +# applies for both absolute and relative paths; in the absolute path +# case this means the entire source path will be recreated under the obj +# directory. This is done to allow two source files with the same name +# to be included as part of the project. +# +# Note: On Cygwin, the path recreated under the obj directory will be +# the cygpath -u output path. +# +# Relative-path objects that begin with "../" cause problems under this +# scheme, as $(CONFIG_OBJ_DIR)/../<rest of path>/ can potentially put the object +# files anywhere in the system, creating clutter and polluting the source tree. +# As such, their paths are flattened - the object file created will be +# $(CONFIG_OBJ_DIR)/<filename>.o. Due to this, two files specified with +# "../" in the beginning cannot have the same name in the project. VPATH +# will be set for these sources to allow make to relocate the source file +# via %.o rules. +# +# The following lines separate the object list into the flatten and regular +# lists, and then handles them as appropriate. + +FLATTEN_OBJ_LIST := $(filter ../%,$(OBJ_LIST)) +FLATTEN_APP_OBJS := $(addprefix $(CONFIG_OBJ_DIR)/,$(notdir $(FLATTEN_OBJ_LIST))) + +REGULAR_OBJ_LIST := $(filter-out $(FLATTEN_OBJ_LIST),$(OBJ_LIST)) +REGULAR_OBJ_LIST_C := $(filter $(OBJ_LIST_C),$(REGULAR_OBJ_LIST)) +REGULAR_OBJ_LIST_CPP := $(filter $(OBJ_LIST_CPP),$(REGULAR_OBJ_LIST)) +REGULAR_OBJ_LIST_CXX := $(filter $(OBJ_LIST_CXX),$(REGULAR_OBJ_LIST)) +REGULAR_OBJ_LIST_CC := $(filter $(OBJ_LIST_CC),$(REGULAR_OBJ_LIST)) +REGULAR_OBJ_LIST_S := $(filter $(OBJ_LIST_S),$(REGULAR_OBJ_LIST)) +REGULAR_OBJ_LIST_SS := $(filter $(OBJ_LIST_SS),$(REGULAR_OBJ_LIST)) + +FLATTEN_SDIR_OBJ_LIST := $(filter ../%,$(SDIR_OBJ_LIST)) +FLATTEN_SDIR_APP_OBJS := $(addprefix $(CONFIG_OBJ_DIR)/,$(notdir $(FLATTEN_SDIR_OBJ_LIST))) + +REGULAR_SDIR_OBJ_LIST := $(filter-out $(FLATTEN_SDIR_OBJ_LIST),$(SDIR_OBJ_LIST)) +REGULAR_SDIR_OBJ_LIST_C := $(filter $(SDIR_OBJ_LIST_C),$(REGULAR_SDIR_OBJ_LIST)) +REGULAR_SDIR_OBJ_LIST_CPP := $(filter $(SDIR_OBJ_LIST_CPP),$(REGULAR_SDIR_OBJ_LIST)) +REGULAR_SDIR_OBJ_LIST_CXX := $(filter $(SDIR_OBJ_LIST_CXX),$(REGULAR_SDIR_OBJ_LIST)) +REGULAR_SDIR_OBJ_LIST_CC := $(filter $(SDIR_OBJ_LIST_CC),$(REGULAR_SDIR_OBJ_LIST)) +REGULAR_SDIR_OBJ_LIST_S := $(filter $(SDIR_OBJ_LIST_S),$(REGULAR_SDIR_OBJ_LIST)) +REGULAR_SDIR_OBJ_LIST_SS := $(filter $(SDIR_OBJ_LIST_SS),$(REGULAR_SDIR_OBJ_LIST)) + +VPATH := $(sort $(dir $(FLATTEN_OBJ_LIST)) $(dir $(FLATTEN_SDIR_OBJ_LIST))) + +APP_OBJS_C := $(addprefix $(CONFIG_OBJ_DIR)/,\ + $(REGULAR_SDIR_OBJ_LIST_C) \ + $(foreach s,$(REGULAR_OBJ_LIST_C),$(call adjust-path,$s))) + +APP_OBJS_CPP := $(addprefix $(CONFIG_OBJ_DIR)/,\ + $(REGULAR_SDIR_OBJ_LIST_CPP) \ + $(foreach s,$(REGULAR_OBJ_LIST_CPP),$(call adjust-path,$s))) + +APP_OBJS_CXX := $(addprefix $(CONFIG_OBJ_DIR)/,\ + $(REGULAR_SDIR_OBJ_LIST_CXX) \ + $(foreach s,$(REGULAR_OBJ_LIST_CXX),$(call adjust-path,$s))) + +APP_OBJS_CC := $(addprefix $(CONFIG_OBJ_DIR)/,\ + $(REGULAR_SDIR_OBJ_LIST_CC) \ + $(foreach s,$(REGULAR_OBJ_LIST_CC),$(call adjust-path,$s))) + +APP_OBJS_S := $(addprefix $(CONFIG_OBJ_DIR)/,\ + $(REGULAR_SDIR_OBJ_LIST_S) \ + $(foreach s,$(REGULAR_OBJ_LIST_S),$(call adjust-path,$s))) + +APP_OBJS_SS := $(addprefix $(CONFIG_OBJ_DIR)/,\ + $(REGULAR_SDIR_OBJ_LIST_SS) \ + $(foreach s,$(REGULAR_OBJ_LIST_SS),$(call adjust-path,$s))) + +APP_OBJS := $(APP_OBJS_C) $(APP_OBJS_CPP) $(APP_OBJS_CXX) $(APP_OBJS_CC) \ + $(APP_OBJS_S) $(APP_OBJS_SS) \ + $(FLATTEN_APP_OBJS) $(FLATTEN_SDIR_APP_OBJS) + +# Add any extra user-provided object files. +APP_OBJS += $(OBJS) + +# Create list of dependancy files for each object file. +APP_DEPS := $(APP_OBJS:.o=.d) + +# Patch the Elf file with system specific information + +# Patch the Elf with the name of the sopc system +ifneq ($(SOPC_NAME),) +ELF_PATCH_FLAG += --sopc_system_name $(SOPC_NAME) +endif + +# Patch the Elf with the absolute path to the Quartus Project Directory +ifneq ($(QUARTUS_PROJECT_DIR),) +ABS_QUARTUS_PROJECT_DIR := $(call adjust-path-mixed,$(shell cd "$(QUARTUS_PROJECT_DIR)"; pwd)) +ELF_PATCH_FLAG += --quartus_project_dir "$(ABS_QUARTUS_PROJECT_DIR)" +endif + +# Patch the Elf and download args with the JDI_FILE if specified +ifneq ($(wildcard $(JDI_FILE)),) +ELF_PATCH_FLAG += --jdi $(JDI_FILE) +DOWNLOAD_JDI_FLAG := --jdi $(JDI_FILE) +endif + +# Patch the Elf with the SOPCINFO_FILE if specified +ifneq ($(wildcard $(SOPCINFO_FILE)),) +ELF_PATCH_FLAG += --sopcinfo $(SOPCINFO_FILE) +endif + +# Use the DOWNLOAD_CABLE variable to specify which JTAG cable to use. +# This is not needed if you only have one cable. +ifneq ($(DOWNLOAD_CABLE),) +DOWNLOAD_CABLE_FLAG := --cable '$(DOWNLOAD_CABLE)' +endif + + +#------------------------------------------------------------------------------ +# BUILD PRE/POST PROCESS +#------------------------------------------------------------------------------ +build_pre_process : + $(BUILD_PRE_PROCESS) + +build_post_process : + $(BUILD_POST_PROCESS) + +.PHONY: build_pre_process build_post_process + + +#------------------------------------------------------------------------------ +# TOOLS +#------------------------------------------------------------------------------ + +# +# Set tool default variables if not already defined. +# If these are defined, they would typically be defined in an +# included makefile fragment. +# +ifeq ($(DEFAULT_CROSS_COMPILE),) +DEFAULT_CROSS_COMPILE := nios2-elf- +endif + +ifeq ($(DEFAULT_STACKREPORT),) +DEFAULT_STACKREPORT := nios2-stackreport +endif + +ifeq ($(DEFAULT_DOWNLOAD),) +DEFAULT_DOWNLOAD := nios2-download +endif + +ifeq ($(DEFAULT_FLASHPROG),) +DEFAULT_FLASHPROG := nios2-flash-programmer +endif + +ifeq ($(DEFAULT_ELFPATCH),) +DEFAULT_ELFPATCH := nios2-elf-insert +endif + +ifeq ($(DEFAULT_RM),) +DEFAULT_RM := rm -f +endif + +ifeq ($(DEFAULT_CP),) +DEFAULT_CP := cp -f +endif + +ifeq ($(DEFAULT_MKDIR),) +DEFAULT_MKDIR := mkdir -p +endif + +# +# Set tool variables to defaults if not already defined. +# If these are defined, they would typically be defined by a +# setting in the generated portion of this makefile. +# +ifeq ($(CROSS_COMPILE),) +CROSS_COMPILE := $(DEFAULT_CROSS_COMPILE) +endif + +ifeq ($(origin CC),default) +CC := $(CROSS_COMPILE)gcc -xc +endif + +ifeq ($(origin CXX),default) +CXX := $(CROSS_COMPILE)gcc -xc++ +endif + +ifeq ($(origin AS),default) +AS := $(CROSS_COMPILE)gcc +endif + +ifeq ($(origin AR),default) +AR := $(CROSS_COMPILE)ar +endif + +ifeq ($(origin LD),default) +LD := $(CROSS_COMPILE)g++ +endif + +ifeq ($(origin RM),default) +RM := $(DEFAULT_RM) +endif + +ifeq ($(NM),) +NM := $(CROSS_COMPILE)nm +endif + +ifeq ($(CP),) +CP := $(DEFAULT_CP) +endif + +ifeq ($(OBJDUMP),) +OBJDUMP := $(CROSS_COMPILE)objdump +endif + +ifeq ($(OBJCOPY),) +OBJCOPY := $(CROSS_COMPILE)objcopy +endif + +ifeq ($(STACKREPORT),) +STACKREPORT := $(DEFAULT_STACKREPORT) --prefix $(CROSS_COMPILE) +else +DISABLE_STACKREPORT := 1 +endif + +ifeq ($(DOWNLOAD),) +DOWNLOAD := $(DEFAULT_DOWNLOAD) +endif + +ifeq ($(FLASHPROG),) +FLASHPROG := $(DEFAULT_FLASHPROG) +endif + +ifeq ($(ELFPATCH),) +ELFPATCH := $(DEFAULT_ELFPATCH) +endif + +ifeq ($(MKDIR),) +MKDIR := $(DEFAULT_MKDIR) +endif + +#------------------------------------------------------------------------------ +# PATTERN RULES TO BUILD OBJECTS +#------------------------------------------------------------------------------ + +define compile.c +@$(ECHO) Info: Compiling $< to $@ +@$(MKDIR) $(@D) +$(CC) -MP -MMD -c $(APP_CPPFLAGS) $(APP_CFLAGS) -o $@ $< +$(CC_POST_PROCESS) +endef + +define compile.cpp +@$(ECHO) Info: Compiling $< to $@ +@$(MKDIR) $(@D) +$(CXX) -MP -MMD -c $(APP_CPPFLAGS) $(APP_CXXFLAGS) $(APP_CFLAGS) -o $@ $< +$(CXX_POST_PROCESS) +endef + +# If assembling with the compiler, ensure "-Wa," is prepended to all APP_ASFLAGS +ifeq ($(AS),$(patsubst %as,%,$(AS))) +COMMA := , +APP_ASFLAGS := $(filter-out $(APP_CFLAGS),$(addprefix -Wa$(COMMA),$(patsubst -Wa$(COMMA)%,%,$(APP_ASFLAGS)))) +endif + +define compile.s +@$(ECHO) Info: Assembling $< to $@ +@$(MKDIR) $(@D) +$(AS) -MP -MMD -c $(APP_CPPFLAGS) $(APP_CFLAGS) $(APP_ASFLAGS) -o $@ $< +$(AS_POST_PROCESS) +endef + +ifeq ($(MAKE_VERSION),3.81) +.SECONDEXPANSION: + +$(APP_OBJS_C): $(CONFIG_OBJ_DIR)/%.o: $$(call adjust-path-mixed,%.c) + $(compile.c) + +$(APP_OBJS_CPP): $(CONFIG_OBJ_DIR)/%.o: $$(call adjust-path-mixed,%.cpp) + $(compile.cpp) + +$(APP_OBJS_CC): $(CONFIG_OBJ_DIR)/%.o: $$(call adjust-path-mixed,%.cc) + $(compile.cpp) + +$(APP_OBJS_CXX): $(CONFIG_OBJ_DIR)/%.o: $$(call adjust-path-mixed,%.cxx) + $(compile.cpp) + +$(APP_OBJS_S): $(CONFIG_OBJ_DIR)/%.o: $$(call adjust-path-mixed,%.S) + $(compile.s) + +$(APP_OBJS_SS): $(CONFIG_OBJ_DIR)/%.o: $$(call adjust-path-mixed,%.s) + $(compile.s) + +endif # MAKE_VERSION != 3.81 + +$(CONFIG_OBJ_DIR)/%.o: %.c + $(compile.c) + +$(CONFIG_OBJ_DIR)/%.o: %.cpp + $(compile.cpp) + +$(CONFIG_OBJ_DIR)/%.o: %.cc + $(compile.cpp) + +$(CONFIG_OBJ_DIR)/%.o: %.cxx + $(compile.cpp) + +$(CONFIG_OBJ_DIR)/%.o: %.S + $(compile.s) + +$(CONFIG_OBJ_DIR)/%.o: %.s + $(compile.s) + + +#------------------------------------------------------------------------------ +# PATTERN RULES TO INTERMEDIATE FILES +#------------------------------------------------------------------------------ + +$(CONFIG_OBJ_DIR)/%.s: %.c + @$(ECHO) Info: Compiling $< to $@ + @$(MKDIR) $(@D) + $(CC) -S $(APP_CPPFLAGS) $(APP_CFLAGS) -o $@ $< + +$(CONFIG_OBJ_DIR)/%.s: %.cpp + @$(ECHO) Info: Compiling $< to $@ + @$(MKDIR) $(@D) + $(CXX) -S $(APP_CPPFLAGS) $(APP_CXXFLAGS) $(APP_CFLAGS) -o $@ $< + +$(CONFIG_OBJ_DIR)/%.s: %.cc + @$(ECHO) Info: Compiling $< to $@ + @$(MKDIR) $(@D) + $(CXX) -S $(APP_CPPFLAGS) $(APP_CXXFLAGS) $(APP_CFLAGS) -o $@ $< + +$(CONFIG_OBJ_DIR)/%.s: %.cxx + @$(ECHO) Info: Compiling $< to $@ + @$(MKDIR) $(@D) + $(CXX) -S $(APP_CPPFLAGS) $(APP_CXXFLAGS) $(APP_CFLAGS) -o $@ $< + +$(CONFIG_OBJ_DIR)/%.i: %.c + @$(ECHO) Info: Compiling $< to $@ + @$(MKDIR) $(@D) + $(CC) -E $(APP_CPPFLAGS) $(APP_CFLAGS) -o $@ $< + +$(CONFIG_OBJ_DIR)/%.i: %.cpp + @$(ECHO) Info: Compiling $< to $@ + @$(MKDIR) $(@D) + $(CXX) -E $(APP_CPPFLAGS) $(APP_CXXFLAGS) $(APP_CFLAGS) -o $@ $< + +$(CONFIG_OBJ_DIR)/%.i: %.cc + @$(ECHO) Info: Compiling $< to $@ + @$(MKDIR) $(@D) + $(CXX) -E $(APP_CPPFLAGS) $(APP_CXXFLAGS) $(APP_CFLAGS) -o $@ $< + +$(CONFIG_OBJ_DIR)/%.i: %.cxx + @$(ECHO) Info: Compiling $< to $@ + @$(MKDIR) $(@D) + $(CXX) -E $(APP_CPPFLAGS) $(APP_CXXFLAGS) $(APP_CFLAGS) -o $@ $< + + +#------------------------------------------------------------------------------ +# TARGET RULES +#------------------------------------------------------------------------------ + +.PHONY : help +help : + @$(ECHO) "Summary of Makefile targets" + @$(ECHO) " Build targets:" + @$(ECHO) " all (default) - Application and all libraries (including BSP)" + @$(ECHO) " bsp - Just the BSP" + @$(ECHO) " libs - All libraries (including BSP)" + @$(ECHO) " flash - All flash files" + @$(ECHO) " mem_init_generate - All memory initialization files" + @$(ECHO) + @$(ECHO) " Clean targets:" + @$(ECHO) " clean_all - Application and all libraries (including BSP)" + @$(ECHO) " clean - Just the application" + @$(ECHO) " clean_bsp - Just the BSP" + @$(ECHO) " clean_libs - All libraries (including BSP)" + @$(ECHO) + @$(ECHO) " Run targets:" + @$(ECHO) " download-elf - Download and run your elf executable" + @$(ECHO) " program-flash - Program flash contents to the board" + +# Handy rule to skip making libraries and just make application. +.PHONY : app +app : $(ELF) + +ifeq ($(CREATE_OBJDUMP), 1) +app : $(OBJDUMP_NAME) +endif + +ifeq ($(CREATE_ELF_DERIVED_FILES),1) +app : elf_derived_files +endif + +.PHONY: elf_derived_files +elf_derived_files: default_mem_init + +# Handy rule for making just the BSP. +.PHONY : bsp +bsp : + @$(ECHO) Info: Building $(BSP_ROOT_DIR) + @$(MAKE) --no-print-directory -C $(BSP_ROOT_DIR) + + +# Make sure all makeable libraries (including the BSP) are up-to-date. +LIB_TARGETS := $(patsubst %,%-recurs-make-lib,$(MAKEABLE_LIBRARY_ROOT_DIRS)) + +.PHONY : libs +libs : $(LIB_TARGETS) + +ifneq ($(strip $(LIB_TARGETS)),) +$(LIB_TARGETS): %-recurs-make-lib: + @$(ECHO) Info: Building $* + $(MAKE) --no-print-directory -C $* +endif + +ifneq ($(strip $(APP_LDDEPS)),) +$(APP_LDDEPS): libs + @true +endif + +# Rules to force your project to rebuild or relink +# .force_relink file will cause any application that depends on this project to relink +# .force_rebuild file will cause this project to rebuild object files +# .force_rebuild_all file will cause this project and any project that depends on this project to rebuild object files + +FORCE_RELINK_DEP := .force_relink +FORCE_REBUILD_DEP := .force_rebuild +FORCE_REBUILD_ALL_DEP := .force_rebuild_all +FORCE_REBUILD_DEP_LIST := $(CONFIG_OBJ_DIR)/$(FORCE_RELINK_DEP) $(CONFIG_OBJ_DIR)/$(FORCE_REBUILD_DEP) $(FORCE_REBUILD_ALL_DEP) + +$(FORCE_REBUILD_DEP_LIST): + +$(APP_OBJS): $(wildcard $(CONFIG_OBJ_DIR)/$(FORCE_REBUILD_DEP)) $(wildcard $(addsuffix /$(FORCE_REBUILD_ALL_DEP), . $(ALT_LIBRARY_DIRS))) + +$(ELF): $(wildcard $(addsuffix /$(FORCE_RELINK_DEP), $(CONFIG_OBJ_DIR) $(ALT_LIBRARY_DIRS))) + + +# Clean just the application. +.PHONY : clean +ifeq ($(CREATE_ELF_DERIVED_FILES),1) +clean : clean_elf_derived_files +endif + +clean : + @$(RM) -r $(ELF) $(OBJDUMP_NAME) $(LINKER_MAP_NAME) $(OBJ_ROOT_DIR) $(RUNTIME_ROOT_DIR) $(FORCE_REBUILD_DEP_LIST) + @$(ECHO) [$(APP_NAME) clean complete] + +# Clean just the BSP. +.PHONY : clean_bsp +clean_bsp : + @$(ECHO) Info: Cleaning $(BSP_ROOT_DIR) + @$(MAKE) --no-print-directory -C $(BSP_ROOT_DIR) clean + +# Clean all makeable libraries including the BSP. +LIB_CLEAN_TARGETS := $(patsubst %,%-recurs-make-clean-lib,$(MAKEABLE_LIBRARY_ROOT_DIRS)) + +.PHONY : clean_libs +clean_libs : $(LIB_CLEAN_TARGETS) + +ifneq ($(strip $(LIB_CLEAN_TARGETS)),) +$(LIB_CLEAN_TARGETS): %-recurs-make-clean-lib: + @$(ECHO) Info: Cleaning $* + $(MAKE) --no-print-directory -C $* clean +endif + +.PHONY: clean_elf_derived_files +clean_elf_derived_files: mem_init_clean + +# Clean application and all makeable libraries including the BSP. +.PHONY : clean_all +clean_all : clean mem_init_clean clean_libs + +# Include the dependency files unless the make goal is performing a clean +# of the application. +ifneq ($(firstword $(MAKECMDGOALS)),clean) +ifneq ($(firstword $(MAKECMDGOALS)),clean_all) +-include $(APP_DEPS) +endif +endif + +.PHONY : download-elf +download-elf : $(ELF) + @if [ "$(DOWNLOAD)" = "none" ]; \ + then \ + $(ECHO) Downloading $(ELF) not supported; \ + else \ + $(ECHO) Info: Downloading $(ELF); \ + $(DOWNLOAD) --go --cpu_name=$(CPU_NAME) $(DOWNLOAD_CABLE_FLAG) $(SOPC_SYSID_FLAG) $(DOWNLOAD_JDI_FLAG) $(WRITE_GMON_OPTION) $(ELF); \ + fi + +# Delete the target of a rule if it has changed and its commands exit +# with a nonzero exit status. +.DELETE_ON_ERROR: + +# Rules for flash programming commands +PROGRAM_FLASH_SUFFIX := -program +PROGRAM_FLASH_TARGET := $(addsuffix $(PROGRAM_FLASH_SUFFIX), $(FLASH_FILES)) + +.PHONY : program-flash +program-flash : $(PROGRAM_FLASH_TARGET) + +.PHONY : $(PROGRAM_FLASH_TARGET) +$(PROGRAM_FLASH_TARGET) : flash + @if [ "$(FLASHPROG)" = "none" ]; \ + then \ + $(ECHO) Programming flash not supported; \ + else \ + $(ECHO) Info: Programming $(basename $@).flash; \ + if [ -z "$($(basename $@)_EPCS_FLAGS)" ]; \ + then \ + $(ECHO) $(FLASHPROG) $(SOPC_SYSID_FLAG) --base=$($(basename $@)_START) $(basename $@).flash; \ + $(FLASHPROG) $(DOWNLOAD_CABLE_FLAG) $(SOPC_SYSID_FLAG) --base=$($(basename $@)_START) $(basename $@).flash; \ + else \ + $(ECHO) $(FLASHPROG) $(SOPC_SYSID_FLAG) --epcs --base=$($(basename $@)_START) $(basename $@).flash; \ + $(FLASHPROG) $(DOWNLOAD_CABLE_FLAG) $(SOPC_SYSID_FLAG) --epcs --base=$($(basename $@)_START) $(basename $@).flash; \ + fi \ + fi + + +# Rules for simulating with an HDL Simulator [QSYS only] +ifeq ($(QSYS),1) +#Create a top level modelsim script load_sim.tcl to source generate msim_setup.tcl and copy mem initialization files +CREATE_TOP_SIM_SCRIPT := alt-create-top-sim-script + +ifeq ($(VSIM),) +VSIM_EXE := "$(if $(VSIM_DIR),$(VSIM_DIR)/,)vsim" +ifeq ($(ENABLE_VSIM_GUI),1) +VSIM := $(VSIM_EXE) -gui +else +VSIM := $(VSIM_EXE) -c +endif # ENABLE_VSIM_GUI == 1 +endif # VSIM not set + +ifeq ($(SPD),) +ifneq ($(ABS_QUARTUS_PROJECT_DIR),) +ifneq ($(SOPC_NAME),) +SPD_LOCATION = $(ABS_QUARTUS_PROJECT_DIR)/$(SOPC_NAME)_tb/$(SOPC_NAME)_tb/$(SOPC_NAME)_tb.spd +LEGACY_SPD_LOCATION = $(ABS_QUARTUS_PROJECT_DIR)/$(SOPC_NAME)_tb.spd +SPD = $(if $(wildcard $(SPD_LOCATION)),$(SPD_LOCATION),$(LEGACY_SPD_LOCATION)) +endif # SOPC_NAME set +endif # ABS_QUARTUS_PROJECT_DIR set +endif # SPD == empty string + + +ifeq ($(LOAD_SIM_SCRIPT),) +SIM_SCRIPT_DIR := $(RUNTIME_ROOT_DIR)/sim +LOAD_SIM_SCRIPT := $(SIM_SCRIPT_DIR)/mentor/load_sim.tcl +endif # LOAD_SIM_SCRIPT == empty string + +ifeq ($(MAKE_VERSION),3.81) +ABS_MEM_INIT_DESCRIPTOR_FILE := $(abspath $(MEM_INIT_DESCRIPTOR_FILE)) +else +ABS_MEM_INIT_DESCRIPTOR_FILE := $(call adjust-path-mixed,$(shell pwd))/$(MEM_INIT_DESCRIPTOR_FILE) +endif + +$(LOAD_SIM_SCRIPT): $(SPD) $(MEM_INIT_DESCRIPTOR_FILE) +ifeq ($(SPD),) + $(error No SPD file specified. Ensure QUARTUS_PROJECT_DIR variable is set) +endif + @$(MKDIR) $(SIM_SCRIPT_DIR) + $(CREATE_TOP_SIM_SCRIPT) --spd=$(SPD) --mem-init-spd=$(abspath $(MEM_INIT_DESCRIPTOR_FILE)) --output-directory=$(SIM_SCRIPT_DIR) + +VSIM_COMMAND = \ + cd $(dir $(LOAD_SIM_SCRIPT)) && \ + $(VSIM) -do "do $(notdir $(LOAD_SIM_SCRIPT)); ld; $(if $(VSIM_RUN_TIME),run ${VSIM_RUN_TIME};quit;)" + +.PHONY: sim +sim: $(LOAD_SIM_SCRIPT) mem_init_generate +ifeq ($(LOAD_SIM_SCRIPT),) + $(error LOAD_SIM_SCRIPT not set) +endif + $(VSIM_COMMAND) + +endif # QSYS == 1 + + + + +#------------------------------------------------------------------------------ +# ELF TARGET RULE +#------------------------------------------------------------------------------ +# Rule for constructing the executable elf file. +$(ELF) : $(APP_OBJS) $(LINKER_SCRIPT) $(APP_LDDEPS) + @$(ECHO) Info: Linking $@ + $(LD) $(APP_LDFLAGS) $(APP_CFLAGS) -o $@ $(filter-out $(CRT0),$(APP_OBJS)) $(APP_LIBS) $(APP_BSP_DEP_LIBS) +ifneq ($(DISABLE_ELFPATCH),1) + $(ELFPATCH) $@ $(ELF_PATCH_FLAG) +endif +ifneq ($(DISABLE_STACKREPORT),1) + @bash -c "$(STACKREPORT) $@" +endif + +$(OBJDUMP_NAME) : $(ELF) + @$(ECHO) Info: Creating $@ + $(OBJDUMP) $(OBJDUMP_FLAGS) $< >$@ + +# Rule for printing the name of the elf file +.PHONY: print-elf-name +print-elf-name: + @$(ECHO) $(ELF) + + diff --git a/software/oto_audio/create-this-app b/software/oto_audio/create-this-app new file mode 100644 index 0000000000000000000000000000000000000000..c2815a24a53933574e3bd3359d273e4b7285cd6b --- /dev/null +++ b/software/oto_audio/create-this-app @@ -0,0 +1,114 @@ +#!/bin/bash +# +# This script creates the blank_project application in this directory. + + +BSP_DIR=../oto_audio_bsp +QUARTUS_PROJECT_DIR=../../ +NIOS2_APP_GEN_ARGS="--elf-name oto_audio.elf --no-src --set OBJDUMP_INCLUDE_SOURCE 1" + + +# First, check to see if $SOPC_KIT_NIOS2 environmental variable is set. +# This variable is required for the command line tools to execute correctly. +if [ -z "${SOPC_KIT_NIOS2}" ] +then + echo Required \$SOPC_KIT_NIOS2 Environmental Variable is not set! + exit 1 +fi + + +# Also make sure that the APP has not been created already. Check for +# existence of Makefile in the app directory +if [ -f ./Makefile ] +then + echo Application has already been created! Delete Makefile if you want to create a new application makefile + exit 1 +fi + + +# We are selecting hal_default bsp because it supports this application. +# Check to see if the hal_default has already been generated by checking for +# existence of the public.mk file. If not, we need to run +# create-this-bsp file to generate the bsp. +if [ ! -f ${BSP_DIR}/public.mk ]; then + # Since BSP doesn't exist, create the BSP + # Pass any command line arguments passed to this script to the BSP. + pushd ${BSP_DIR} >> /dev/null + ./create-this-bsp "$@" || { + echo "create-this-bsp failed" + exit 1 + } + popd >> /dev/null +fi + + +# Don't run make if create-this-app script is called with --no-make arg +SKIP_MAKE= +while [ $# -gt 0 ] +do + case "$1" in + --no-make) + SKIP_MAKE=1 + ;; + esac + shift +done + + +# Now we also need to go copy the sources for this application to the +# local directory. +find "${SOPC_KIT_NIOS2}/examples/software/blank_project/" -name '*.c' -or -name '*.h' -or -name 'hostfs*' | xargs -i cp -L {} ./ || { + echo "failed during copying example source files" + exit 1 +} + +find "${SOPC_KIT_NIOS2}/examples/software/blank_project/" -name 'readme.txt' -or -name 'Readme.txt' | xargs -i cp -L {} ./ || { + echo "failed copying readme file" +} + +if [ -d "${SOPC_KIT_NIOS2}/examples/software/blank_project/system" ] +then + cp -RL "${SOPC_KIT_NIOS2}/examples/software/blank_project/system" . || { + echo "failed during copying project support files" + exit 1 + } +fi + +chmod -R +w . || { + echo "failed during changing file permissions" + exit 1 +} + +cmd="nios2-app-generate-makefile --bsp-dir ${BSP_DIR} --set QUARTUS_PROJECT_DIR=${QUARTUS_PROJECT_DIR} ${NIOS2_APP_GEN_ARGS}" + +echo "create-this-app: Running \"${cmd}\"" +$cmd || { + echo "nios2-app-generate-makefile failed" + exit 1 +} + +if [ -z "$SKIP_MAKE" ]; then + cmd="make" + + echo "create-this-app: Running \"$cmd\"" + $cmd || { + echo "make failed" + exit 1 + } + + echo + echo "To download and run the application:" + echo " 1. Make sure the board is connected to the system." + echo " 2. Run 'nios2-configure-sof <SOF_FILE_PATH>' to configure the FPGA with the hardware design." + echo " 3. If you have a stdio device, run 'nios2-terminal' in a different shell." + echo " 4. Run 'make download-elf' from the application directory." + echo + echo "To debug the application:" + echo " Import the project into Nios II Software Build Tools for Eclipse." + echo " Refer to Nios II Software Build Tools for Eclipse Documentation for more information." + echo + echo -e "" +fi + + +exit 0 diff --git a/software/oto_audio/main.c b/software/oto_audio/main.c new file mode 100644 index 0000000000000000000000000000000000000000..4540f453a6fae5eeee30bdcfd1f6837e5e7b438b --- /dev/null +++ b/software/oto_audio/main.c @@ -0,0 +1,51 @@ +/* + * main.c + * + * Created on: Nov 20, 2017 + * Author: noman + */ + +#include <stdio.h> +#include <inttypes.h> +#include <unistd.h> +#include "system.h" +#define AUDIO_BASE ((int32_t*)AUDIO_0_BASE) +volatile int32_t *audioLData = AUDIO_BASE; +volatile int32_t *audioRData = AUDIO_BASE+1; +volatile int32_t *audioReady = AUDIO_BASE+3; + +int main() { + printf("Hello world\n"); +// *audioINIT = 1; +// *audioINIT = 0; + int counter=0; + int i; + while (1) { + //printf("%d\n" ,*audioReady); + for (i=1000000;i>0;--i){ + if (*audioReady == 1){ + if (counter < (i/6000)){ + counter ++; + *audioLData = -0x10000000; + *audioRData = -0x00010000; + } else if (counter < (i/3000)){ + counter ++; + *audioLData = 0x10000000; + *audioRData = 0x00010000; + }else { + counter =0; + } + //printf("%\n"); + }else{ + //printf("fucked\n"); + } + } + //printf("begin "); + //usleep(1000000); + //printf("end\n"); + } + + return 0; +} + + diff --git a/software/oto_audio/readme.txt b/software/oto_audio/readme.txt new file mode 100644 index 0000000000000000000000000000000000000000..57f6738b0b6536b3a08e6855442fe02dbf19d94a --- /dev/null +++ b/software/oto_audio/readme.txt @@ -0,0 +1,11 @@ +This template is starting point for creating a project based on your custom C code. +It will provide you a default project to which you can add your software files. To +add files to a project, manually copy the file into the application directory (e.g. +using Windows Explorer), then right click on your application project and select +refresh. + +You can also add files to the project using the Nios II Software Build Tools for Eclipse import function. +Select File -> Import. +Expand General and select File System in the Import Window and click Next. +Identify the appropriate source and destination directories. +Check the files you want to add and click Finish.