Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
19 years ago

problem in designing custom peripheral

I designe a custom peripheral including a slave port with variable latency.So Its avalon interface signals is following:

clk,reset_n,ic_addr,ic_be_n,ic_cs,ic_data,ic_rd_n, ic_wr_n,ci_data,ci_valid,ci_wa

itrequest.

Signal ci_valid is used to inform nios2 of coming of valid read-data.Then I created a simple system to test the component but I get trouble .The signal ci_valid seems be ignored by System Generator Program because it is not wired to any other modules generated by Sopc Builder while both ci_data and ci_waitrequest is wired to a module named "custom_component_0_avalon_slave_0_arbitrator" . I think signal ci_valid should also be wired to that module but it is not.Why? What might I omit? help me~~~

custom peripheral name:custom_component

custom_component_0 is a instance and relative PTF section contained in system PTF file is as follows:

MODULE custom_component_0

{

class = "custom_component";

class_version = "1.0";

SYSTEM_BUILDER_INFO

{

Instantiate_In_System_Module = "1";

Is_Enabled = "1";

Clock_Source = "clk";

View

{

MESSAGES

{

}

Is_Collapsed = "1";

}

}

PORT_WIRING

{

}

SIMULATION

{

DISPLAY

{

SIGNAL x101

{

name = "custom_comp_hou/avalon_slave_0";

format = "Divider";

}

SIGNAL x102

{

name = "ic_addr";

radix = "hexadecimal";

}

SIGNAL x103

{

name = "ic_be_n";

}

SIGNAL x104

{

name = "ic_cs";

}

SIGNAL x105

{

name = "ic_data";

radix = "hexadecimal";

}

SIGNAL x106

{

name = "ic_rd_n";

}

SIGNAL x107

{

name = "ic_wr_n";

}

SIGNAL x108

{

name = "clk";

}

SIGNAL x109

{

name = "reset_n";

}

SIGNAL x110

{

name = "ac_ACK_addr";

}

SIGNAL x111

{

name = "ac_ACK_data";

}

SIGNAL x112

{

name = "sc_sa_tag_in";

radix = "hexadecimal";

}

SIGNAL x113

{

name = "sc_data";

radix = "hexadecimal";

}

SIGNAL x114

{

name = "ci_data";

radix = "hexadecimal";

}

SIGNAL x115

{

name = "ci_valid";

}

SIGNAL x116

{

name = "ci_waitrequest";

}

SIGNAL x117

{

name = "cs_addr";

radix = "hexadecimal";

}

SIGNAL x118

{

name = "cs_be_n";

}

SIGNAL x119

{

name = "cs_data";

radix = "hexadecimal";

}

SIGNAL x120

{

name = "cs_rd_n";

}

SIGNAL x121

{

name = "cs_wr_n";

}

SIGNAL x122

{

name = "cs_tag";

radix = "hexadecimal";

}

SIGNAL x123

{

name = "ca_empty";

}

SIGNAL x124

{

name = "ca_wr_n";

}

}

}

SLAVE avalon_slave_0

{

SYSTEM_BUILDER_INFO

{

Bus_Type = "avalon";

Address_Width = "26";

Address_Alignment = "dynamic";

Data_Width = "8";

Has_Base_Address = "1";

Has_IRQ = "0";

Setup_Time = "0";

Hold_Time = "0";

Read_Wait_States = "peripheral_controlled";

Write_Wait_States = "peripheral_controlled";

Read_Latency = "0";

Max_Pending_Read_Transactions = "2";

Is_Printable_Device = "0";

Is_Memory_Device = "1";

MASTERED_BY cpu_0/instruction_master

{

priority = "1";

}

MASTERED_BY cpu_0/data_master

{

priority = "1";

}

Base_Address = "0x00000000";

IRQ_MASTER cpu_0/data_master

{

IRQ_Number = "NC";

}

}

PORT_WIRING

{

PORT ic_addr

{

width = "26";

width_expression = "";

direction = "input";

type = "address";

}

PORT ic_be_n

{

width = "1";

width_expression = "";

direction = "input";

type = "byteenable_n";

}

PORT ic_cs

{

width = "1";

width_expression = "";

direction = "input";

type = "chipselect";

}

PORT ic_data

{

width = "8";

width_expression = "";

direction = "input";

type = "writedata";

}

PORT ic_rd_n

{

width = "1";

width_expression = "";

direction = "input";

type = "read_n";

}

PORT ic_wr_n

{

width = "1";

width_expression = "";

direction = "input";

type = "write_n";

}

PORT clk

{

width = "1";

width_expression = "";

direction = "input";

type = "clk";

}

PORT reset_n

{

width = "1";

width_expression = "";

direction = "input";

type = "reset_n";

}

PORT ac_ACK_addr

{

width = "1";

width_expression = "";

direction = "input";

type = "export";

}

PORT ac_ACK_data

{

width = "1";

width_expression = "";

direction = "input";

type = "export";

}

PORT sc_sa_tag_in

{

width = "2";

width_expression = "";

direction = "input";

type = "export";

}

PORT sc_data

{

width = "8";

width_expression = "";

direction = "input";

type = "export";

}

PORT ci_data

{

width = "8";

width_expression = "";

direction = "output";

type = "readdata";

}

PORT ci_valid

{

width = "1";

width_expression = "";

direction = "output";

type = "readdatavalid";

}

PORT ci_waitrequest

{

width = "1";

width_expression = "";

direction = "output";

type = "waitrequest";

}

PORT cs_addr

{

width = "26";

width_expression = "";

direction = "output";

type = "export";

}

PORT cs_be_n

{

width = "1";

width_expression = "";

direction = "output";

type = "export";

}

PORT cs_data

{

width = "8";

width_expression = "";

direction = "output";

type = "export";

}

PORT cs_rd_n

{

width = "1";

width_expression = "";

direction = "output";

type = "export";

}

PORT cs_wr_n

{

width = "1";

width_expression = "";

direction = "output";

type = "export";

}

PORT cs_tag

{

width = "2";

width_expression = "";

direction = "output";

type = "export";

}

PORT ca_empty

{

width = "1";

width_expression = "";

direction = "output";

type = "export";

}

PORT ca_wr_n

{

width = "1";

width_expression = "";

direction = "output";

type = "export";

}

}

COMPONENT_BUILDER

{

AVS_SETTINGS

{

Setup_Value = "0";

Read_Wait_Value = "1";

Write_Wait_Value = "1";

Hold_Value = "0";

Timing_Units = "cycles";

Read_Latency_Value = "0";

Max_Pending_Read_Transactions_Value = "2";

Address_Alignment = "dynamic";

Is_Printable_Device = "0";

Is_Memory_Device = "1";

external_wait = "1";

}

}

}

WIZARD_SCRIPT_ARGUMENTS

{

hdl_parameters

{

flag_tag = "2'b00";

}

}

HDL_INFO

{

Synthesis_HDL_Files = "__PROJECT_DIRECTORY__/custom_component.v,

__PROJECT_DIRECTORY__/custom_component_0.v";

}

}

}

No RepliesBe the first to reply