1.1 --- a/gpio.xml Fri Aug 13 10:41:29 2010 +0100 1.2 +++ b/gpio.xml Sat Aug 06 01:43:24 2011 +0100 1.3 @@ -1,5 +1,5 @@ 1.4 <?xml version="1.0" encoding="UTF-8"?> 1.5 -<Component Name="gpio" Text="GPIO" Type="IO" Ver="3.1" Help="gpio\document\gpio.htm"> 1.6 +<Component Name="gpio" Text="GPIO" Type="IO" Ver="3.3" Help="gpio\document\gpio.htm" Processor="LM32,LM8" LatticeFamily="All" Device="All"> 1.7 <MasterSlavePorts> 1.8 <SlavePort Prefix="GPIO" Name="GP I/O Port" Type="DATA,DMAR,DMAW"/> 1.9 </MasterSlavePorts> 1.10 @@ -14,32 +14,48 @@ 1.11 <ExternalPort Name="PIO_IO" Type="inout" Width="DATA_WIDTH" Condition="TRISTATE_PORTS" /> 1.12 </ExternalPorts> 1.13 <DeviceDriver InitRoutine="MicoGPIOInit" StructName="MicoGPIOCtx_t"> 1.14 - <DDInclude Include = "LookupServices.h"/> 1.15 - <DDstruct> 1.16 - <DDSElem MemberName = "name" MemberType = "const char*" Type = "Parm" Value = "InstanceName" Format="string"/> 1.17 - <DDSElem MemberName = "base" MemberType = "unsigned int" Type = "Parm" Value = "BASE_ADDRESS" /> 1.18 - <DDSElem MemberName = "lookupReg" MemberType = "DeviceReg_t" Type="uninitialized" Value=""/> 1.19 - <DDSElem MemberName = "intrLevel" MemberType = "unsigned int" Type = "Interrupt" Value = "IRQ_LEVEL" /> 1.20 - <DDSElem MemberName = "output_only" MemberType = "unsigned int" Type = "Parm" Value = "OUTPUT_PORTS_ONLY" /> 1.21 - <DDSElem MemberName = "input_only" MemberType = "unsigned int" Type = "Parm" Value = "INPUT_PORTS_ONLY" /> 1.22 - <DDSElem MemberName = "in_and_out" MemberType = "unsigned int" Type = "Parm" Value = "BOTH_INPUT_AND_OUTPUT" /> 1.23 - <DDSElem MemberName = "tristate" MemberType = "unsigned int" Type = "Parm" Value = "TRISTATE_PORTS" /> 1.24 - <DDSElem MemberName = "data_width" MemberType = "unsigned int" Type = "Parm" Value = "DATA_WIDTH" /> 1.25 - <DDSElem MemberName = "input_width" MemberType = "unsigned int" Type = "Parm" Value = "INPUT_WIDTH" /> 1.26 - <DDSElem MemberName = "output_width" MemberType = "unsigned int" Type = "Parm" Value = "OUTPUT_WIDTH" /> 1.27 - <DDSElem MemberName = "intr_enable" MemberType = "unsigned int" Type = "Parm" Value = "IRQ_MODE" /> 1.28 - <DDSElem MemberName = "prev" MemberType = "void *" Type = "uninitialized" Value = "" /> 1.29 - <DDSElem MemberName = "next" MemberType = "void *" Type = "uninitialized" Value = "" /> 1.30 + <DDInclude Include = "LookupServices.h" Processor="LM32"/> 1.31 + <DDInclude Include = "stddef.h" Processor="LM8"/> 1.32 + <DDIRQ IRQAPI="MicoGPIOISR" Parameter="InstanceName" Include="MicoGPIO.h" Processor="LM8"/> 1.33 + <DDPreProcessor Name="__MICOGPIO_USER_IRQ_HANDLER__" Processor="LM8"/> 1.34 + <DDstruct> 1.35 + <DDSElem MemberName = "name" MemberType = "const char*" Type = "Parm" Value = "InstanceName" Format="string" Processor="LM32,LM8"/> 1.36 + <DDSElem MemberName = "base" MemberType = "unsigned int" Type = "Parm" Value = "BASE_ADDRESS" Processor="LM32"/> 1.37 + <DDSElem MemberName = "base" MemberType = "size_t" Type = "Parm" Value = "BASE_ADDRESS" Processor="LM8"/> 1.38 + <DDSElem MemberName = "lookupReg" MemberType = "DeviceReg_t" Type="uninitialized" Value="" Processor="LM32"/> 1.39 + <DDSElem MemberName = "intrLevel" MemberType = "unsigned int" Type = "Interrupt" Value = "IRQ_LEVEL" Processor="LM32"/> 1.40 + <DDSElem MemberName = "intrLevel" MemberType = "unsigned char" Type = "Interrupt" Value = "IRQ_LEVEL" Processor="LM8"/> 1.41 + <DDSElem MemberName = "output_only" MemberType = "unsigned int" Type = "Parm" Value = "OUTPUT_PORTS_ONLY" Processor="LM32"/> 1.42 + <DDSElem MemberName = "output_only" MemberType = "unsigned int" Type = "Parm" Value = "OUTPUT_PORTS_ONLY" Processor="LM8"/> 1.43 + <DDSElem MemberName = "input_only" MemberType = "unsigned int" Type = "Parm" Value = "INPUT_PORTS_ONLY" Processor="LM32"/> 1.44 + <DDSElem MemberName = "input_only" MemberType = "unsigned char" Type = "Parm" Value = "INPUT_PORTS_ONLY" Processor="LM8"/> 1.45 + <DDSElem MemberName = "in_and_out" MemberType = "unsigned int" Type = "Parm" Value = "BOTH_INPUT_AND_OUTPUT" Processor="LM32"/> 1.46 + <DDSElem MemberName = "in_and_out" MemberType = "unsigned char" Type = "Parm" Value = "BOTH_INPUT_AND_OUTPUT" Processor="LM8"/> 1.47 + <DDSElem MemberName = "tristate" MemberType = "unsigned int" Type = "Parm" Value = "TRISTATE_PORTS" Processor="LM32"/> 1.48 + <DDSElem MemberName = "tristate" MemberType = "unsigned char" Type = "Parm" Value = "TRISTATE_PORTS" Processor="LM8"/> 1.49 + <DDSElem MemberName = "data_width" MemberType = "unsigned int" Type = "Parm" Value = "DATA_WIDTH" Processor="LM32"/> 1.50 + <DDSElem MemberName = "data_width" MemberType = "unsigned char" Type = "Parm" Value = "DATA_WIDTH" Processor="LM8"/> 1.51 + <DDSElem MemberName = "input_width" MemberType = "unsigned int" Type = "Parm" Value = "INPUT_WIDTH" Processor="LM32"/> 1.52 + <DDSElem MemberName = "input_width" MemberType = "unsigned char" Type = "Parm" Value = "INPUT_WIDTH" Processor="LM8"/> 1.53 + <DDSElem MemberName = "output_width" MemberType = "unsigned int" Type = "Parm" Value = "OUTPUT_WIDTH" Processor="LM32"/> 1.54 + <DDSElem MemberName = "output_width" MemberType = "unsigned char" Type = "Parm" Value = "OUTPUT_WIDTH" Processor="LM8"/> 1.55 + <DDSElem MemberName = "intr_enable" MemberType = "unsigned int" Type = "Parm" Value = "IRQ_MODE" Processor="LM32"/> 1.56 + <DDSElem MemberName = "intr_enable" MemberType = "unsigned char" Type = "Parm" Value = "IRQ_MODE" Processor="LM8"/> 1.57 + <DDSElem MemberName = "wb_data_size" MemberType = "unsigned int" Type = "Parm" Value = "WB_DAT_WIDTH" Processor="LM32"/> 1.58 + <DDSElem MemberName = "prev" MemberType = "void *" Type = "uninitialized" Value = "" Processor="LM32"/> 1.59 + <DDSElem MemberName = "next" MemberType = "void *" Type = "uninitialized" Value = "" Processor="LM32"/> 1.60 </DDstruct> 1.61 </DeviceDriver> 1.62 <Files> 1.63 - <File Name="../components/gpio/rtl/verilog/gpio.v" /> 1.64 - <File Name="../components/gpio/rtl/verilog/tpio.v" /> 1.65 + <File Name="../components/gpio/rtl/verilog/gpio.v"/> 1.66 + <File Name="../components/gpio/rtl/verilog/tpio.v"/> 1.67 </Files> 1.68 <Parms> 1.69 - <Parm Name="InstanceName" Value="gpio" Type="string" isiname="true" Text="Instance Name"/> 1.70 - <Parm Name="BASE_ADDRESS" Value="0x80000000" Type="Integer" isba="true" Text="Base Address"/> 1.71 - <Parm Name="SIZE" Value="128" Type="Integer" issize="true" Text="Size" Enable="false"/> 1.72 + <Parm Name="InstanceName" Value="gpio" Type="string" isiname="true" Text="Instance Name"/> 1.73 + <Parm Name="BASE_ADDRESS" Value="0x80000000" Type="Integer" isba="true" Text="Base Address"/> 1.74 + <Parm Name="SIZE" Value="16" Type="Integer" issize="true" Text="Size" Enable="false"/> 1.75 + <Parm Name="WB_DAT_WIDTH" Port="GPIO" Type="List" ListValues="8,32" OType="Integer" Value="32" Text="WISHBONE Data Bus Width" isparm="true"/> 1.76 + <Parm Name="WB_ADR_WIDTH" Port="GPIO" Type="Integer" OType="Integer" Value="4" Text="WISHBONE Address Bus Width" isparm="true"/> 1.77 <Parm Name="ADDRESS_LOCK" Type="Define" Value="undef" Text="Lock Address"/> 1.78 <Parm Name="DISABLE" Type="Define" Value="undef" isuse="true" Text="Disable Component"/> 1.79 <Parm Name="OUTPUT_PORTS_ONLY" Type="define" Value="def" GROUP="XFER_MODE" Text="Output Ports Only" isparm="true" /> 1.80 @@ -50,8 +66,8 @@ 1.81 <Parm Name="INPUT_WIDTH" Type="Integer" ValueRange="1-32" Value="1" Condition="BOTH_INPUT_AND_OUTPUT" Text="Input Width" isparm="true"/> 1.82 <Parm Name="OUTPUT_WIDTH" Type="Integer" ValueRange="1-32" Value="1" Condition="BOTH_INPUT_AND_OUTPUT" Text="Output Width" isparm="true"/> 1.83 <Parm Name="IRQ_MODE" Type="define" Value="undef" Text="IRQ Mode" isparm="true"/> 1.84 - <Parm Name="LEVEL" Type="define" Value="undef" GROUP="IMODE" Condition="IRQ_MODE" Text="Level" isparm="true"/> 1.85 - <Parm Name="EDGE" Type="define" Value="def" GROUP="IMODE" Condition="IRQ_MODE" Text="Edge" isparm="true"/> 1.86 + <Parm Name="LEVEL" Type="define" Value="undef" GROUP="IMODE" Condition="IRQ_MODE" Text="Level Sensitive" isparm="true"/> 1.87 + <Parm Name="EDGE" Type="define" Value="def" GROUP="IMODE" Condition="IRQ_MODE" Text="Edge Sensitive" isparm="true"/> 1.88 <Parm Name="EITHER_EDGE_IRQ" Type="define" Value="undef" Group="EMODE" Condition="EDGE" Text="Either Edge" isparm="true"/> 1.89 <Parm Name="POSE_EDGE_IRQ" Type="define" Value="def" Group="EMODE" Condition="EDGE" Text="Postive Edge" isparm="true"/> 1.90 <Parm Name="NEGE_EDGE_IRQ" Type="define" Value="undef" Group="EMODE" Condition="EDGE" Text="Negative Edge" isparm="true"/> 1.91 @@ -59,25 +75,29 @@ 1.92 <GUIS Columns="2" Help="component_help\lm32.htm" Name="GPIO"> 1.93 <GUI Widget="Text" Span="1" Name="InstanceName" Width="40"/> 1.94 <GUI Widget="Text" Span="1" Name="BASE_ADDRESS"/> 1.95 - <GUI Widget="Group" Span="1" Name="XFER_MODE" Text="Port Types" Columns="1"/> 1.96 + 1.97 + <GUI Widget="Group" Span="1" Name="XFER_MODE" Text="Port Types" Columns="1"/> 1.98 <GUI Widget="Radio" Span="1" Name="OUTPUT_PORTS_ONLY"/> 1.99 <GUI Widget="Radio" Span="1" Name="INPUT_PORTS_ONLY"/> 1.100 <GUI Widget="Radio" Span="1" Name="TRISTATE_PORTS"/> 1.101 <GUI Widget="Radio" Span="1" Name="BOTH_INPUT_AND_OUTPUT"/> 1.102 - 1.103 - <GUI Widget="Group" Span="1" Text="Port Width" Columns="2"/> 1.104 + 1.105 + <GUI Widget="Group" Span="1" Text="Input/Output Port Widths" Columns="2"/> 1.106 <GUI Widget="Spinner" Span="1" Name="DATA_WIDTH"/> 1.107 <GUI Widget="Spinner" Span="1" Name="INPUT_WIDTH"/> 1.108 <GUI Widget="Spinner" Span="1" Name="OUTPUT_WIDTH"/> 1.109 - 1.110 - <GUI Widget="Group" Span="1" Name="IRQ_MODE" Text="IRQ Mode" Columns="1"/> 1.111 + 1.112 + <GUI Widget="Group" Span="2" Name="IRQ_MODE" Text="IRQ Mode" Columns="3"/> 1.113 <GUI Widget="Check" Span="1" Name="IRQ_MODE"/> 1.114 <GUI Widget="Radio" Span="1" Name="LEVEL"/> 1.115 <GUI Widget="Radio" Span="1" Name="EDGE"/> 1.116 - 1.117 - <GUI Widget="Group" Span="1" Text="Edge Response" Columns="1"/> 1.118 + 1.119 + <GUI Widget="Group" Span="2" Text="Edge Response" Columns="3"/> 1.120 <GUI Widget="Radio" Span="1" Name="EITHER_EDGE_IRQ"/> 1.121 <GUI Widget="Radio" Span="1" Name="POSE_EDGE_IRQ"/> 1.122 <GUI Widget="Radio" Span="1" Name="NEGE_EDGE_IRQ"/> 1.123 + 1.124 + <GUI Widget="Group" Span="2" Text="WISHBONE Configuration" Columns="2"/> 1.125 + <GUI Widget="Combo" Span="1" Name="WB_DAT_WIDTH" Port="GPIO"/> 1.126 </GUIS> 1.127 </Component>