Skip to content

Latest commit

 

History

History
252 lines (219 loc) · 15.7 KB

README.org

File metadata and controls

252 lines (219 loc) · 15.7 KB

openHPSDR radio firmware

Changes from N7DDC

  • the FPGA communicates to MCU with UART
  • support Alex SPI protocol and TAPR/F6ITU boards
  • sync source code with upstream TAPR ANAN-100D firmware
  • reboot the radio from remote

TO DO

  • implement IPv6 support
  • support auto-sensing on protocol 1 (connect to gigabit switch)
  • calculate VSWR and send it to MCU with command 0x70

Protocol 1 (protocol1 folder)

Use the Angelia version as base with MCU UART channel and the same functionalities described above. The main limitation is that it requires a 100Mbit/s Ethernet switch or you need to force that speed if you have a manged switch.

The protocol is supported by the following software:

Protocol 2 (protocol2 folder)

Full features Angelia firmware with MCU UART channel and the same functionalities described above. It requires gigabit Ethernet switch or connection.

The protocol is supported by the following software:

MIC port

The port is compatible with Yaesu MICs such as MH-31. This table describes the pin out of the MIC PORT; from left to right as standard Ethernet port.

pinshort namefunctionality
1DOWNlong press enable/disable 1W amplifier
2UPlong press enable/disable audio amplifier
3+5V DC
4Mic GNDmicrophone ground
5Mic Inputmicrophone input
6PTTpush-to-talk input
7GNDchassis ground or speaker (check jumper 1)
8FASTpower on/off the radio

EXT.IO

This table describes the functionalities available on Ext.IO D-Sub 15 pins port. The voltage range is GND to 3.3V without buffer or protection. Therefore, pay attention!

pinApollo BoardAlex Boardfunctionality
1ADC1ADC1input for measurement of the output power of the transmitter
2ADC2ADC2input for measurement of reflected wave for calculating SWR
3PTT outPTT outamplifier control output, logic level 3.3 V, TX mode high level
4TUNETUNEApollo auto-tune control
5UO_0UO_0User Output 0 (programmable from software)
6UO_1UO_1User Output 1 (programmable from software)
7UO_2UO_2User Output 2 (programmable from software)
8UO_3UO_3User Output 3 (programmable from software)
9PTT inPTT inactivate the PTT. Pull-up, to activate close to GND. Use optocoupler
10VNAVNAused for VNA measurement
11ANT2TX_LOADApollo: enable the second antenna relay (high level); Alex: SPI tx load
12UO_4SDOApollo: User Output 4; Alex: SPI data
13UO_5SCKApollo: User Output 5; Alex: SPI clock
14UO_6RX_LOADApollo: User Output 6; Alex: SPI rx load
15GNDGNDradio ground

You can choose between two SPI protocols in the Alex configuration:

  • by default you get the openHPSDR Alex protocol with TX/RX load usable with the original Alex board (or from TAPR) or the F6ITU Alexandrie.
  • enabling dithering (not available in the used ADCs) you can enable the customized N7DDC protocol.

You can find the SPI protocol definition in the following file.

For the customized protocol you can read Overview of the first firmware by N7DDC.

Build

The procedure to build the firmware is the same as the bootloader therefore for a comprehensive information read the bootloader readme.

Flash

To flash the radio firmware into the device you the rbf file and the programmer. Put the radio in Bootloader mode, either by connecting both iambic keys to GND or using the programmer, then use the programmer to write the firmware to slot N. The programmed slot is automatically selected as the next slot to boot.

FPGA pin assignment

The following table collects the FPGA pin assignment and its functionality.

NameDirectionLocationI/O BankVREF GroupI/O Standard
ADCCLKOutputPIN_V42B2_N13.3-V LVCMOS
ADCCS_NOutputPIN_R32B2_N13.3-V LVCMOS
ADCMISOInputPIN_V32B2_N13.3-V LVCMOS
ADCMOSIOutputPIN_W22B2_N13.3-V LVCMOS
ANTOutputPIN_V22B2_N03.3-V LVCMOS
ATTN_CLKOutputPIN_Y12B2_N13.3-V LVCMOS
ATTN_DATAOutputPIN_Y22B2_N13.3-V LVCMOS
ATTN_LEOutputPIN_AA12B2_N13.3-V LVCMOS
ATTN_LE_2OutputPIN_W12B2_N13.3-V LVCMOS
CBCLKOutputPIN_F226B6_N13.3-V LVCMOS
CCS_NOutputPIN_B216B6_N03.3-V LVCMOS
CDINOutputPIN_F216B6_N13.3-V LVCMOS
CDOUTInputPIN_E216B6_N03.3-V LVCMOS
CLRCINOutputPIN_E226B6_N03.3-V LVCMOS
CLRCOUTOutputPIN_D226B6_N03.3-V LVCMOS
CMCLKOutputPIN_D216B6_N03.3-V LVCMOS
CMODEOutputPIN_B226B6_N03.3-V LVCMOS
CMOSIOutputPIN_C216B6_N03.3-V LVCMOS
CSCKOutputPIN_C226B6_N03.3-V LVCMOS
DACD[13]OutputPIN_N225B5_N03.3-V LVCMOS
DACD[12]OutputPIN_N215B5_N03.3-V LVCMOS
DACD[11]OutputPIN_P225B5_N03.3-V LVCMOS
DACD[10]OutputPIN_P215B5_N03.3-V LVCMOS
DACD[9]OutputPIN_R225B5_N03.3-V LVCMOS
DACD[8]OutputPIN_R215B5_N03.3-V LVCMOS
DACD[7]OutputPIN_U215B5_N03.3-V LVCMOS
DACD[6]OutputPIN_U225B5_N03.3-V LVCMOS
DACD[5]OutputPIN_V215B5_N13.3-V LVCMOS
DACD[4]OutputPIN_V225B5_N13.3-V LVCMOS
DACD[3]OutputPIN_W215B5_N13.3-V LVCMOS
DACD[2]OutputPIN_W225B5_N13.3-V LVCMOS
DACD[1]OutputPIN_Y215B5_N13.3-V LVCMOS
DACD[0]OutputPIN_Y225B5_N13.3-V LVCMOS
DAC_ALCOutputPIN_K226B6_N13.3-V LVCMOS
ECSOutputPIN_A38B8_N13.3-V LVCMOS
ESCKOutputPIN_A48B8_N13.3-V LVCMOS
ESIOutputPIN_B48B8_N13.3-V LVCMOS
ESOInputPIN_B38B8_N13.3-V LVCMOS
FPGA_PLLOutputPIN_AA215B5_N13.3-V LVCMOS
FPGA_PTTOutputPIN_P12B2_N03.3-V LVCMOS
INA[15]InputPIN_AA43B3_N11.8 V
INA[14]InputPIN_AB43B3_N11.8 V
INA[13]InputPIN_AB33B3_N11.8 V
INA[12]InputPIN_AA33B3_N11.8 V
INA[11]InputPIN_AB53B3_N11.8 V
INA[10]InputPIN_AA53B3_N11.8 V
INA[9]InputPIN_AB63B3_N11.8 V
INA[8]InputPIN_AA63B3_N11.8 V
INA[7]InputPIN_AB73B3_N11.8 V
INA[6]InputPIN_AA73B3_N11.8 V
INA[5]InputPIN_AB83B3_N01.8 V
INA[4]InputPIN_AA83B3_N01.8 V
INA[3]InputPIN_AB103B3_N01.8 V
INA[2]InputPIN_AA93B3_N01.8 V
INA[1]InputPIN_AA103B3_N01.8 V
INA[0]InputPIN_AB93B3_N01.8 V
INA_2[15]InputPIN_AA144B4_N11.8 V
INA_2[14]InputPIN_AB144B4_N11.8 V
INA_2[13]InputPIN_AB134B4_N11.8 V
INA_2[12]InputPIN_AA134B4_N11.8 V
INA_2[11]InputPIN_AB154B4_N11.8 V
INA_2[10]InputPIN_AA154B4_N11.8 V
INA_2[9]InputPIN_AB164B4_N11.8 V
INA_2[8]InputPIN_AA164B4_N11.8 V
INA_2[7]InputPIN_AB174B4_N01.8 V
INA_2[6]InputPIN_AA174B4_N01.8 V
INA_2[5]InputPIN_AB184B4_N01.8 V
INA_2[4]InputPIN_AA184B4_N01.8 V
INA_2[3]InputPIN_AB204B4_N01.8 V
INA_2[2]InputPIN_AA194B4_N01.8 V
INA_2[1]InputPIN_AA204B4_N01.8 V
INA_2[0]InputPIN_AB194B4_N01.8 V
INA_CLKInputPIN_AA113B3_N01.8 V
INA_CLK_2InputPIN_AA124B4_N11.8 V
KEY_DASHInputPIN_H216B6_N13.3-V LVCMOS
KEY_DOTInputPIN_H226B6_N13.3-V LVCMOS
MCU_UART_RXInputPIN_L226B6_N13.3-V LVCMOS
MCU_UART_TXOutputPIN_L216B6_N13.3-V LVCMOS
NCONFIGOutputPIN_H11B1_N13.3-V LVCMOS
OSC_10MHZInputPIN_T22B2_N03.3-V LVCMOS
OVERFLOWInputPIN_Y33B3_N11.8 V
OVERFLOW_2InputPIN_Y144B4_N11.8 V
PHY_CLK125InputPIN_B127B7_N13.3-V LVCMOS
PHY_MDCOutputPIN_C137B7_N13.3-V LVCMOS
PHY_MDIOBidirPIN_B137B7_N13.3-V LVCMOS
PHY_RESET_NOutputPIN_B147B7_N13.3-V LVCMOS
PHY_RX[3]InputPIN_B88B8_N03.3-V LVCMOS
PHY_RX[2]InputPIN_A98B8_N03.3-V LVCMOS
PHY_RX[1]InputPIN_B98B8_N03.3-V LVCMOS
PHY_RX[0]InputPIN_A108B8_N03.3-V LVCMOS
PHY_RX_CLOCKInputPIN_B118B8_N03.3-V LVCMOS
PHY_RX_DVInputPIN_B108B8_N03.3-V LVCMOS
PHY_TX[3]OutputPIN_A78B8_N03.3-V LVCMOS
PHY_TX[2]OutputPIN_B68B8_N03.3-V LVCMOS
PHY_TX[1]OutputPIN_A68B8_N03.3-V LVCMOS
PHY_TX[0]OutputPIN_B58B8_N13.3-V LVCMOS
PHY_TX_CLOCKOutputPIN_E58B8_N13.3-V LVCMOS
PHY_TX_ENOutputPIN_A88B8_N03.3-V LVCMOS
PTTInputPIN_J216B6_N13.3-V LVCMOS
PTT2InputPIN_P22B2_N03.3-V LVCMOS
SPI_RX_LOADOutputPIN_N12B2_N03.3-V LVCMOS
SPI_SCKOutputPIN_R22B2_N03.3-V LVCMOS
SPI_SDOOutputPIN_U22B2_N03.3-V LVCMOS
TUNEOutputPIN_N22B2_N03.3-V LVCMOS
USEROUT0OutputPIN_M22B2_N03.3-V LVCMOS
USEROUT1OutputPIN_V12B2_N13.3-V LVCMOS
USEROUT2OutputPIN_U12B2_N03.3-V LVCMOS
USEROUT3OutputPIN_R12B2_N03.3-V LVCMOS
VNA_outOutputPIN_M12B2_N03.3-V LVCMOS
_122MHz_inInputPIN_T215B5_N03.3-V LVCMOS
_122MHz_outOutputPIN_T205B5_N13.3-V LVCMOS
led1OutputPIN_F11B1_N13.3-V LVCMOS
led2OutputPIN_E11B1_N03.3-V LVCMOS
led3OutputPIN_C11B1_N03.3-V LVCMOS
led4OutputPIN_B11B1_N03.3-V LVCMOS
MCU_NOT_CONPIN_K21
MCU_NOT_USEDPIN_J22

License

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA