From 0ffb793cb56ec10a43ae241299b347bc4fef7b5c Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Fri, 10 Jan 2014 23:13:22 -0600 Subject: [PATCH] Relayout the GUI to be more in line with expected norms Add user logic reset signal Stabilize data transfer --- clients/tde/src/part/fpgaview/layout.ui | 301 +++++++++--------- clients/tde/src/part/fpgaview/part.cpp | 61 +++- clients/tde/src/part/fpgaview/part.h | 2 + fpga/gpmc/xilinx/common/main.v | 18 +- .../xilinx/numato/spartan6/xc6slx9/main.ucf | 225 ++++++------- .../xc6slx9/ulab_debug_interface.xise | 1 + fpga/xilinx/programmer/bit2svf/bit2svf.c | 2 +- 7 files changed, 326 insertions(+), 284 deletions(-) diff --git a/clients/tde/src/part/fpgaview/layout.ui b/clients/tde/src/part/fpgaview/layout.ui index e1803e1..95328ab 100644 --- a/clients/tde/src/part/fpgaview/layout.ui +++ b/clients/tde/src/part/fpgaview/layout.ui @@ -50,7 +50,7 @@ group8BitInput - + 8-Bit Input (Switches) @@ -96,10 +96,33 @@ group8BitInputLED0 - + + + unnamed_spacer + + + Horizontal + + + Expanding + + + + 0 + 0 + + + + group8BitInputValueText + + + + + AlignVCenter|AlignRight + @@ -154,10 +177,115 @@ group8BitOutputLED0 - + + + unnamed_spacer + + + Horizontal + + + Expanding + + + + 0 + 0 + + + + group8BitOutputValueText + + + + + AlignVCenter|AlignRight + + + + + + + group4BitOutput + + + 4-Bit Input (Buttons) + + + + unnamed_grid + + + + group4BitInputLED3 + + + + + group4BitInputLED2 + + + + + group4BitInputLED1 + + + + + group4BitInputLED0 + + + + + group4BitInputValueText + + + AlignVCenter|AlignRight + + + + + + + group4BitOutput + + + 4-Bit Output Values + + + + unnamed_grid + + + + group4BitOutputLED3 + + + + + group4BitOutputLED2 + + + + + group4BitOutputLED1 + + + + + group4BitOutputLED0 + + + + + group4BitOutputValueText + + + AlignVCenter|AlignRight + @@ -215,175 +343,30 @@ + + AlignVCenter|AlignRight + - + - group4BitInput + groupGlobalControl - Buttons: + Global Controls unnamed_grid - + - unnamed_layout + groupGlobalControlResetButton + + + Strobe User Logic Reset - - - unnamed_grid - - - - unnamed_layout - - - - unnamed_grid - - - - unnamed_spacer - - - Horizontal - - - Expanding - - - - 0 - 0 - - - - - - group4BitInputLED0 - - - - - unnamed_spacer - - - Horizontal - - - Expanding - - - - 0 - 0 - - - - - - - - group4BitInputLED3 - - - - - group4BitInputLED1 - - - - - unnamed_layout - - - - unnamed_grid - - - - unnamed_spacer - - - Horizontal - - - Expanding - - - - 0 - 0 - - - - - - group4BitInputLED2 - - - - - unnamed_spacer - - - Horizontal - - - Expanding - - - - 0 - 0 - - - - - - - - group4BitInputValueLabel - - - In: - - - AlignBottom|AlignLeft - - - - - group4BitOutputValueLabel - - - Out: - - - AlignTop|AlignLeft - - - - - group4BitInputValueText - - - AlignBottom|AlignRight - - - - - group4BitOutputValueText - - - AlignTop|AlignRight - - - diff --git a/clients/tde/src/part/fpgaview/part.cpp b/clients/tde/src/part/fpgaview/part.cpp index 36809c2..d90eca4 100644 --- a/clients/tde/src/part/fpgaview/part.cpp +++ b/clients/tde/src/part/fpgaview/part.cpp @@ -589,7 +589,7 @@ FPGAViewPart::FPGAViewPart(TQWidget *parentWidget, const char *widgetName, TQObj : RemoteInstrumentPart( parent, name ), m_base(NULL), m_interfaceMode(BasicInterfaceMode), m_commHandlerState(0), m_commHandlerMode(0), m_commHandlerNextState(0), m_commHandlerNextMode(0), m_connectionActiveAndValid(false), m_tickerState(0), m_remoteInputModeEnabled(false), m_4bitInputValue(0), m_4bitOutputValue(0), m_8bitInputValue(0), m_8bitOutputValue(0), m_16bitInputValue(0), m_16bitOutputValue(0), m_7segDigit3OutputValue(0xff), - m_7segDigit2OutputValue(0xff), m_7segDigit1OutputValue(0xff), m_7segDigit0OutputValue(0xff), + m_7segDigit2OutputValue(0xff), m_7segDigit1OutputValue(0xff), m_7segDigit0OutputValue(0xff), m_sendingUserLogicReset(false), m_batchOutputFile(NULL), m_dataOutputFile(NULL), m_dataMemorySize(16384), m_dataMemorySizePrev(0), m_dataMemoryImageWidth(128), m_dataMemoryImageHeight(128), m_inputImageViewer(NULL), m_outputImageViewer(NULL) @@ -637,15 +637,14 @@ FPGAViewPart::FPGAViewPart(TQWidget *parentWidget, const char *widgetName, TQObj m_modeSubMenu->insert(m_modeAdvancedEnabled); // Initialize widgets - m_base->group4BitInputValueLabel->setFixedSize(LED_BASE_SIZE*2, LED_BASE_SIZE*2); - m_base->group4BitOutputValueLabel->setFixedSize(LED_BASE_SIZE*2, LED_BASE_SIZE*2); - m_base->group4BitInputValueText->setFixedSize(LED_BASE_SIZE*2, LED_BASE_SIZE*2); - m_base->group4BitOutputValueText->setFixedSize(LED_BASE_SIZE*2, LED_BASE_SIZE*2); - m_base->group4BitInputLED3->setFixedSize(LED_SIZE); m_base->group4BitInputLED2->setFixedSize(LED_SIZE); m_base->group4BitInputLED1->setFixedSize(LED_SIZE); m_base->group4BitInputLED0->setFixedSize(LED_SIZE); + m_base->group4BitOutputLED3->setFixedSize(LED_SIZE); + m_base->group4BitOutputLED2->setFixedSize(LED_SIZE); + m_base->group4BitOutputLED1->setFixedSize(LED_SIZE); + m_base->group4BitOutputLED0->setFixedSize(LED_SIZE); m_base->group8BitInputLED7->setFixedSize(LED_SIZE); m_base->group8BitInputLED6->setFixedSize(LED_SIZE); m_base->group8BitInputLED5->setFixedSize(LED_SIZE); @@ -667,6 +666,10 @@ FPGAViewPart::FPGAViewPart(TQWidget *parentWidget, const char *widgetName, TQObj m_base->group4BitInputLED2->setState(KLed::Off); m_base->group4BitInputLED1->setState(KLed::Off); m_base->group4BitInputLED0->setState(KLed::Off); + m_base->group4BitOutputLED3->setState(KLed::Off); + m_base->group4BitOutputLED2->setState(KLed::Off); + m_base->group4BitOutputLED1->setState(KLed::Off); + m_base->group4BitOutputLED0->setState(KLed::Off); m_base->group8BitInputLED7->setState(KLed::Off); m_base->group8BitInputLED6->setState(KLed::Off); m_base->group8BitInputLED5->setState(KLed::Off); @@ -684,6 +687,10 @@ FPGAViewPart::FPGAViewPart(TQWidget *parentWidget, const char *widgetName, TQObj m_base->group8BitOutputLED1->setState(KLed::Off); m_base->group8BitOutputLED0->setState(KLed::Off); + m_base->group4BitOutputLED3->setClickable(false); + m_base->group4BitOutputLED2->setClickable(false); + m_base->group4BitOutputLED1->setClickable(false); + m_base->group4BitOutputLED0->setClickable(false); m_base->group8BitOutputLED7->setClickable(false); m_base->group8BitOutputLED6->setClickable(false); m_base->group8BitOutputLED5->setClickable(false); @@ -693,6 +700,12 @@ FPGAViewPart::FPGAViewPart(TQWidget *parentWidget, const char *widgetName, TQObj m_base->group8BitOutputLED1->setClickable(false); m_base->group8BitOutputLED0->setClickable(false); +#if 0 + TQFontMetrics group8BitTextMetrics(m_base->group8BitOutputValueText->font()); + m_base->group8BitInputValueText->setFixedSize(group8BitTextMetrics.width("0000"), group8BitTextMetrics.height()); + m_base->group8BitOutputValueText->setFixedSize(group8BitTextMetrics.width("0000"), group8BitTextMetrics.height()); +#endif + connect(m_base->group4BitInputLED3, SIGNAL(changed()), this, SLOT(process4BitInputChanges())); connect(m_base->group4BitInputLED2, SIGNAL(changed()), this, SLOT(process4BitInputChanges())); connect(m_base->group4BitInputLED1, SIGNAL(changed()), this, SLOT(process4BitInputChanges())); @@ -744,6 +757,7 @@ FPGAViewPart::FPGAViewPart(TQWidget *parentWidget, const char *widgetName, TQObj m_base->LCDOutputLabel->setFixedSize(lcdwidth, lcdheight); m_base->frameLCDDisplay->setFrameStyle(TQFrame::Box | TQFrame::Raised); + connect(m_base->groupGlobalControlResetButton, SIGNAL(clicked()), this, SLOT(groupGlobalControlResetButtonClicked())); connect(m_base->batchTestRunButton, SIGNAL(clicked()), this, SLOT(batchTestRunButtonClicked())); connect(m_base->dataProcessingRunButton, SIGNAL(clicked()), this, SLOT(dataProcessingRunButtonClicked())); @@ -815,6 +829,12 @@ void FPGAViewPart::process4BitInputChanges() { } void FPGAViewPart::process4BitOutputChanges() { + // Write m_4bitOutputValue to LEDs + m_base->group4BitOutputLED3->setState((m_4bitOutputValue & 0x08)?KLed::On:KLed::Off); + m_base->group4BitOutputLED2->setState((m_4bitOutputValue & 0x04)?KLed::On:KLed::Off); + m_base->group4BitOutputLED1->setState((m_4bitOutputValue & 0x02)?KLed::On:KLed::Off); + m_base->group4BitOutputLED0->setState((m_4bitOutputValue & 0x01)?KLed::On:KLed::Off); + // Write m_4bitOutputValue to label m_base->group4BitOutputValueText->setText(TQString("0x%1").arg(m_4bitOutputValue, 0, 16)); } @@ -862,13 +882,13 @@ void FPGAViewPart::process8BitInputChanges() { m_base->group8BitInputLED0->setClickable(false); } - m_base->group8BitInputValueText->setText(TQString("0x%1").arg(m_8bitInputValue, 0, 16)); + m_base->group8BitInputValueText->setText(TQString("").sprintf("0x%02x", m_8bitInputValue)); if (m_remoteInputModeEnabled) { - m_base->group8BitInput->setTitle(i18n("8-Bit Input Values") + " [" + i18n("Remote Input Mode") + "]"); + m_base->group8BitInput->setTitle(i18n("8-Bit Input (Switches)") + " [" + i18n("Remote Input Mode") + "]"); } else { - m_base->group8BitInput->setTitle(i18n("8-Bit Input Values") + " [" + i18n("Local Input Mode") + "]"); + m_base->group8BitInput->setTitle(i18n("8-Bit Input (Switches)") + " [" + i18n("Local Input Mode") + "]"); } } @@ -895,7 +915,7 @@ void FPGAViewPart::process8BitOutputChanges() { m_base->group8BitOutputLED1->setState((m_8bitOutputValue & 0x02)?KLed::On:KLed::Off); m_base->group8BitOutputLED0->setState((m_8bitOutputValue & 0x01)?KLed::On:KLed::Off); - m_base->group8BitOutputValueText->setText(TQString("0x%1").arg(m_8bitOutputValue, 0, 16)); + m_base->group8BitOutputValueText->setText(TQString("").sprintf("0x%02x", m_8bitOutputValue)); } void FPGAViewPart::process16BitInputChanges() { @@ -905,7 +925,7 @@ void FPGAViewPart::process16BitInputChanges() { void FPGAViewPart::process16BitOutputChanges() { // Write m_16bitOutputValue to label - m_base->group16BitOutputValue->setText(TQString("0x%1").arg(m_16bitOutputValue, 0, 16)); + m_base->group16BitOutputValue->setText(TQString("").sprintf("0x%04x", m_16bitOutputValue)); } void FPGAViewPart::processLCDOutputChanges() { @@ -1012,6 +1032,7 @@ void FPGAViewPart::processLockouts() { m_base->batchTestOutputFile->setEnabled(false); m_base->batchTest16BitCheckBox->setEnabled(false); m_base->batchTestRunButton->setEnabled(false); + m_base->groupGlobalControlResetButton->setEnabled(false); } else { m_base->batchTestInputFile->setEnabled(true); @@ -1035,6 +1056,7 @@ void FPGAViewPart::processLockouts() { m_base->dataProcessingOutputFile->setEnabled(false); m_base->dataProcessingGenerateValidationString->setEnabled(false); m_base->dataProcessingRunButton->setEnabled(false); + m_base->groupGlobalControlResetButton->setEnabled(false); } else { m_base->dataProcessingInputFile->setEnabled(true); @@ -1047,6 +1069,7 @@ void FPGAViewPart::processLockouts() { if ((m_connectionActiveAndValid == true) && (m_commHandlerMode == 0)) { m_base->dataProcessingStatusLabel->setText(i18n("Ready")); + m_base->groupGlobalControlResetButton->setEnabled(!m_sendingUserLogicReset); } } @@ -1125,6 +1148,11 @@ TQPtrList FPGAViewPart::menuActionList() { return m_menuActionList; } +void FPGAViewPart::groupGlobalControlResetButtonClicked() { + m_sendingUserLogicReset = true; + processLockouts(); +} + void FPGAViewPart::batchTestRunButtonClicked() { m_commHandlerNextState = 0; m_commHandlerNextMode = 1; @@ -1166,6 +1194,17 @@ void FPGAViewPart::sendInputStatesToRemoteFPGA() { data[13] = '\r'; m_socket->writeBlock(data, 14); m_socket->writeBufferedData(); + + if (m_sendingUserLogicReset) { + // Send user logic reset request + data[0] = 'R'; + data[1] = '\r'; + m_socket->writeBlock(data, 2); + m_socket->writeBufferedData(); + + m_sendingUserLogicReset = false; + processLockouts(); + } } } diff --git a/clients/tde/src/part/fpgaview/part.h b/clients/tde/src/part/fpgaview/part.h index 8262689..3fb2732 100644 --- a/clients/tde/src/part/fpgaview/part.h +++ b/clients/tde/src/part/fpgaview/part.h @@ -199,6 +199,7 @@ namespace RemoteLab void processLCDOutputChanges(); void process7SegmentLEDOutputChanges(); + void groupGlobalControlResetButtonClicked(); void batchTestRunButtonClicked(); void dataProcessingRunButtonClicked(); @@ -239,6 +240,7 @@ namespace RemoteLab unsigned char m_7segDigit2OutputValue; unsigned char m_7segDigit1OutputValue; unsigned char m_7segDigit0OutputValue; + bool m_sendingUserLogicReset; UnsignedIntegerList m_batchInputValueList; UnsignedIntegerList m_batchOutputValueList; diff --git a/fpga/gpmc/xilinx/common/main.v b/fpga/gpmc/xilinx/common/main.v index a54de0d..a06565a 100644 --- a/fpga/gpmc/xilinx/common/main.v +++ b/fpga/gpmc/xilinx/common/main.v @@ -39,6 +39,7 @@ module main( output reg userproc_start, input userproc_done, + output reg userlogic_reset, input [3:0] four_bit_leds, input [7:0] eight_bit_leds, @@ -239,12 +240,18 @@ module main( gpmc_advn_reg = gpmc_advn; gpmc_oen_reg = gpmc_oen; gpmc_wen_reg = gpmc_wen; - gpmc_data_reg = gpmc_data; + if (gpmc_wen_reg == 1'b0) begin + gpmc_data_reg = gpmc_data; + end if (gpmc_advn_reg == 1'b0) begin gpmc_address_reg = gpmc_address; data_storage_write_enable = 1'b0; lcd_data_storage_wea = 1'b0; end + if (gpmc_wen_reg == 1'b1) begin + data_storage_write_enable = 1'b0; + lcd_data_storage_wea = 1'b0; + end if (gpmc_address_reg[RAM_ADDR_BITS] == 1'b1) begin // System memory access @@ -310,6 +317,8 @@ module main( // Bit 0: User processing start // Bit 1: User processing done (read only) // 0x0b: Number of address bits of DSP RAM (read only) + // 0x0c: User device control + // Bit 0: User logic reset // 0x20 - 0x3f: LCD data area if (gpmc_wen_reg == 1'b0) begin if (gpmc_address_reg[(RAM_ADDR_BITS-1):5] == 1) begin // Address range 0x20 - 0x3f @@ -333,6 +342,9 @@ module main( 10: begin userproc_start = gpmc_data_reg[0]; end + 12: begin + userlogic_reset = gpmc_data_reg[0]; + end default: begin // Do nothing end @@ -384,6 +396,10 @@ module main( 11: begin gpmc_data_out = RAM_ADDR_BITS; end + 12: begin + gpmc_data_out[0] = userlogic_reset; + gpmc_data_out[7:1] = 0; + end default: begin gpmc_data_out = 0; end diff --git a/fpga/gpmc/xilinx/numato/spartan6/xc6slx9/main.ucf b/fpga/gpmc/xilinx/numato/spartan6/xc6slx9/main.ucf index 02c10c4..2c6b6b9 100644 --- a/fpga/gpmc/xilinx/numato/spartan6/xc6slx9/main.ucf +++ b/fpga/gpmc/xilinx/numato/spartan6/xc6slx9/main.ucf @@ -1,130 +1,131 @@ # (c) 2013 Timothy Pearson, Raptor Engineering # Released into the Public Domain -NET "clk" LOC = "V10" |IOSTANDARD = "LVCMOS33"; +NET "clk" LOC = "V10" | IOSTANDARD = "LVCMOS33"; +NET "clk" TNM_NET = clk; TIMESPEC TS_clk = PERIOD "clk" 100000 KHz HIGH 50%; #NET "serial_input" LOC = "T12" | IOSTANDARD = "LVCMOS33"; #NET "serial_output" LOC = "M10" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; -NET "gpmc_advn" LOC = "C5" |IOSTANDARD = "LVCMOS33"; -NET "gpmc_oen" LOC = "A3" |IOSTANDARD = "LVCMOS33"; -NET "gpmc_wen" LOC = "A5" |IOSTANDARD = "LVCMOS33"; +NET "gpmc_advn" LOC = "C5" | IOSTANDARD = "LVCMOS33"; +NET "gpmc_oen" LOC = "A3" | IOSTANDARD = "LVCMOS33"; +NET "gpmc_wen" LOC = "A5" | IOSTANDARD = "LVCMOS33"; -NET "gpmc_data<0>" LOC = "A6" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; -NET "gpmc_data<1>" LOC = "C8" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; -NET "gpmc_data<2>" LOC = "C9" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; -NET "gpmc_data<3>" LOC = "A10" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; -NET "gpmc_data<4>" LOC = "C10" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; -NET "gpmc_data<5>" LOC = "D9" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; -NET "gpmc_data<6>" LOC = "D8" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; -NET "gpmc_data<7>" LOC = "B6" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; +NET "gpmc_data<0>" LOC = "A6" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; +NET "gpmc_data<1>" LOC = "C8" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; +NET "gpmc_data<2>" LOC = "C9" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; +NET "gpmc_data<3>" LOC = "A10" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; +NET "gpmc_data<4>" LOC = "C10" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; +NET "gpmc_data<5>" LOC = "D9" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; +NET "gpmc_data<6>" LOC = "D8" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; +NET "gpmc_data<7>" LOC = "B6" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; -NET "gpmc_address<0>" LOC = "A11" |IOSTANDARD = "LVCMOS33"; -NET "gpmc_address<1>" LOC = "F9" |IOSTANDARD = "LVCMOS33"; -NET "gpmc_address<2>" LOC = "A9" |IOSTANDARD = "LVCMOS33"; -NET "gpmc_address<3>" LOC = "A8" |IOSTANDARD = "LVCMOS33"; -NET "gpmc_address<4>" LOC = "A7" |IOSTANDARD = "LVCMOS33"; -NET "gpmc_address<5>" LOC = "C6" |IOSTANDARD = "LVCMOS33"; -NET "gpmc_address<6>" LOC = "A4" |IOSTANDARD = "LVCMOS33"; -NET "gpmc_address<7>" LOC = "A2" |IOSTANDARD = "LVCMOS33"; -NET "gpmc_address<8>" LOC = "B11" |IOSTANDARD = "LVCMOS33"; -NET "gpmc_address<9>" LOC = "G9" |IOSTANDARD = "LVCMOS33"; -NET "gpmc_address<10>" LOC = "B9" |IOSTANDARD = "LVCMOS33"; -NET "gpmc_address<11>" LOC = "B8" |IOSTANDARD = "LVCMOS33"; -NET "gpmc_address<12>" LOC = "C7" |IOSTANDARD = "LVCMOS33"; -NET "gpmc_address<13>" LOC = "D6" |IOSTANDARD = "LVCMOS33"; -NET "gpmc_address<14>" LOC = "B4" |IOSTANDARD = "LVCMOS33"; -NET "gpmc_address<15>" LOC = "B2" |IOSTANDARD = "LVCMOS33"; +NET "gpmc_address<0>" LOC = "A11" | IOSTANDARD = "LVCMOS33"; +NET "gpmc_address<1>" LOC = "F9" | IOSTANDARD = "LVCMOS33"; +NET "gpmc_address<2>" LOC = "A9" | IOSTANDARD = "LVCMOS33"; +NET "gpmc_address<3>" LOC = "A8" | IOSTANDARD = "LVCMOS33"; +NET "gpmc_address<4>" LOC = "A7" | IOSTANDARD = "LVCMOS33"; +NET "gpmc_address<5>" LOC = "C6" | IOSTANDARD = "LVCMOS33"; +NET "gpmc_address<6>" LOC = "A4" | IOSTANDARD = "LVCMOS33"; +NET "gpmc_address<7>" LOC = "A2" | IOSTANDARD = "LVCMOS33"; +NET "gpmc_address<8>" LOC = "B11" | IOSTANDARD = "LVCMOS33"; +NET "gpmc_address<9>" LOC = "G9" | IOSTANDARD = "LVCMOS33"; +NET "gpmc_address<10>" LOC = "B9" | IOSTANDARD = "LVCMOS33"; +NET "gpmc_address<11>" LOC = "B8" | IOSTANDARD = "LVCMOS33"; +NET "gpmc_address<12>" LOC = "C7" | IOSTANDARD = "LVCMOS33"; +NET "gpmc_address<13>" LOC = "D6" | IOSTANDARD = "LVCMOS33"; +NET "gpmc_address<14>" LOC = "B4" | IOSTANDARD = "LVCMOS33"; +NET "gpmc_address<15>" LOC = "B2" | IOSTANDARD = "LVCMOS33"; -NET "usermem_wen" LOC = "V16" |IOSTANDARD = "LVCMOS33"; -NET "usermem_wait" LOC = "T18" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; -NET "userproc_start" LOC = "K16" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; -NET "userproc_done" LOC = "L13" |IOSTANDARD = "LVCMOS33"; +NET "usermem_wen" LOC = "V16" | IOSTANDARD = "LVCMOS33"; +NET "usermem_wait" LOC = "T18" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; +NET "userproc_start" LOC = "K16" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; +NET "userproc_done" LOC = "L13" | IOSTANDARD = "LVCMOS33"; +NET "userlogic_reset" LOC = "E13" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; -NET "usermem_data<0>" LOC = "V14" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; -NET "usermem_data<1>" LOC = "T11" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; -NET "usermem_data<2>" LOC = "R11" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; -NET "usermem_data<3>" LOC = "T14" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; -NET "usermem_data<4>" LOC = "U16" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; -NET "usermem_data<5>" LOC = "T17" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; -NET "usermem_data<6>" LOC = "K15" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; -NET "usermem_data<7>" LOC = "L12" |SLEW = FAST |IOSTANDARD = "LVCMOS33"; +NET "usermem_data<0>" LOC = "V14" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; +NET "usermem_data<1>" LOC = "T11" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; +NET "usermem_data<2>" LOC = "R11" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; +NET "usermem_data<3>" LOC = "T14" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; +NET "usermem_data<4>" LOC = "U16" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; +NET "usermem_data<5>" LOC = "T17" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; +NET "usermem_data<6>" LOC = "K15" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; +NET "usermem_data<7>" LOC = "L12" | SLEW = FAST | IOSTANDARD = "LVCMOS33"; -NET "usermem_address<0>" LOC = "K12" |IOSTANDARD = "LVCMOS33"; -NET "usermem_address<1>" LOC = "L14" |IOSTANDARD = "LVCMOS33"; -NET "usermem_address<2>" LOC = "M14" |IOSTANDARD = "LVCMOS33"; -NET "usermem_address<3>" LOC = "L15" |IOSTANDARD = "LVCMOS33"; -NET "usermem_address<4>" LOC = "N15" |IOSTANDARD = "LVCMOS33"; -NET "usermem_address<5>" LOC = "P15" |IOSTANDARD = "LVCMOS33"; -NET "usermem_address<6>" LOC = "U17" |IOSTANDARD = "LVCMOS33"; -NET "usermem_address<7>" LOC = "U13" |IOSTANDARD = "LVCMOS33"; -NET "usermem_address<8>" LOC = "V13" |IOSTANDARD = "LVCMOS33"; -NET "usermem_address<9>" LOC = "U18" |IOSTANDARD = "LVCMOS33"; -NET "usermem_address<10>" LOC = "P16" |IOSTANDARD = "LVCMOS33"; -NET "usermem_address<11>" LOC = "N16" |IOSTANDARD = "LVCMOS33"; -NET "usermem_address<12>" LOC = "L16" |IOSTANDARD = "LVCMOS33"; -NET "usermem_address<13>" LOC = "N14" |IOSTANDARD = "LVCMOS33"; -NET "usermem_address<14>" LOC = "M13" |IOSTANDARD = "LVCMOS33"; -NET "usermem_address<15>" LOC = "K13" |IOSTANDARD = "LVCMOS33"; +NET "usermem_address<0>" LOC = "K12" | IOSTANDARD = "LVCMOS33"; +NET "usermem_address<1>" LOC = "L14" | IOSTANDARD = "LVCMOS33"; +NET "usermem_address<2>" LOC = "M14" | IOSTANDARD = "LVCMOS33"; +NET "usermem_address<3>" LOC = "L15" | IOSTANDARD = "LVCMOS33"; +NET "usermem_address<4>" LOC = "N15" | IOSTANDARD = "LVCMOS33"; +NET "usermem_address<5>" LOC = "P15" | IOSTANDARD = "LVCMOS33"; +NET "usermem_address<6>" LOC = "U17" | IOSTANDARD = "LVCMOS33"; +NET "usermem_address<7>" LOC = "U13" | IOSTANDARD = "LVCMOS33"; +NET "usermem_address<8>" LOC = "V13" | IOSTANDARD = "LVCMOS33"; +NET "usermem_address<9>" LOC = "U18" | IOSTANDARD = "LVCMOS33"; +NET "usermem_address<10>" LOC = "P16" | IOSTANDARD = "LVCMOS33"; +NET "usermem_address<11>" LOC = "N16" | IOSTANDARD = "LVCMOS33"; +NET "usermem_address<12>" LOC = "L16" | IOSTANDARD = "LVCMOS33"; +NET "usermem_address<13>" LOC = "N14" | IOSTANDARD = "LVCMOS33"; +NET "usermem_address<14>" LOC = "M13" | IOSTANDARD = "LVCMOS33"; +NET "usermem_address<15>" LOC = "K13" | IOSTANDARD = "LVCMOS33"; -NET "four_bit_leds<0>" LOC = "G13" |IOSTANDARD = "LVCMOS33"; -NET "four_bit_leds<1>" LOC = "H16" |IOSTANDARD = "LVCMOS33"; -NET "four_bit_leds<2>" LOC = "G14" |IOSTANDARD = "LVCMOS33"; -NET "four_bit_leds<3>" LOC = "F16" |IOSTANDARD = "LVCMOS33"; +NET "four_bit_leds<0>" LOC = "G13" | IOSTANDARD = "LVCMOS33"; +NET "four_bit_leds<1>" LOC = "H16" | IOSTANDARD = "LVCMOS33"; +NET "four_bit_leds<2>" LOC = "G14" | IOSTANDARD = "LVCMOS33"; +NET "four_bit_leds<3>" LOC = "F16" | IOSTANDARD = "LVCMOS33"; -NET "eight_bit_leds<0>" LOC = "E18" |IOSTANDARD = "LVCMOS33"; -NET "eight_bit_leds<1>" LOC = "C18" |IOSTANDARD = "LVCMOS33"; -NET "eight_bit_leds<2>" LOC = "A15" |IOSTANDARD = "LVCMOS33"; -NET "eight_bit_leds<3>" LOC = "A14" |IOSTANDARD = "LVCMOS33"; -NET "eight_bit_leds<4>" LOC = "K14" |IOSTANDARD = "LVCMOS33"; -NET "eight_bit_leds<5>" LOC = "H14" |IOSTANDARD = "LVCMOS33"; -NET "eight_bit_leds<6>" LOC = "G18" |IOSTANDARD = "LVCMOS33"; -NET "eight_bit_leds<7>" LOC = "F18" |IOSTANDARD = "LVCMOS33"; +NET "eight_bit_leds<0>" LOC = "E18" | IOSTANDARD = "LVCMOS33"; +NET "eight_bit_leds<1>" LOC = "C18" | IOSTANDARD = "LVCMOS33"; +NET "eight_bit_leds<2>" LOC = "A15" | IOSTANDARD = "LVCMOS33"; +NET "eight_bit_leds<3>" LOC = "A14" | IOSTANDARD = "LVCMOS33"; +NET "eight_bit_leds<4>" LOC = "K14" | IOSTANDARD = "LVCMOS33"; +NET "eight_bit_leds<5>" LOC = "H14" | IOSTANDARD = "LVCMOS33"; +NET "eight_bit_leds<6>" LOC = "G18" | IOSTANDARD = "LVCMOS33"; +NET "eight_bit_leds<7>" LOC = "F18" | IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io<0>" LOC = "R10" |IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io<1>" LOC = "T9" |IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io<2>" LOC = "U7" |IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io<3>" LOC = "R7" |IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io<4>" LOC = "N5" |IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io<5>" LOC = "R5" |IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io<6>" LOC = "R3" |IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io<7>" LOC = "T3" |IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io<8>" LOC = "T5" |IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io<9>" LOC = "P6" |IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io<10>" LOC = "T7" |IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io<11>" LOC = "V7" |IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io<12>" LOC = "V9" |IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io<13>" LOC = "T10" |IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io<14>" LOC = "A12" |IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io<15>" LOC = "B12" |IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io_wen" LOC = "C11" |IOSTANDARD = "LVCMOS33"; -NET "sixteen_bit_io_mode" LOC = "D11" |IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io<0>" LOC = "R10" | IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io<1>" LOC = "T9" | IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io<2>" LOC = "U7" | IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io<3>" LOC = "R7" | IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io<4>" LOC = "N5" | IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io<5>" LOC = "R5" | IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io<6>" LOC = "R3" | IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io<7>" LOC = "T3" | IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io<8>" LOC = "T5" | IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io<9>" LOC = "P6" | IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io<10>" LOC = "T7" | IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io<11>" LOC = "V7" | IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io<12>" LOC = "V9" | IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io<13>" LOC = "T10" | IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io<14>" LOC = "A12" | IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io<15>" LOC = "B12" | IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io_wen" LOC = "C11" | IOSTANDARD = "LVCMOS33"; +NET "sixteen_bit_io_mode" LOC = "D11" | IOSTANDARD = "LVCMOS33"; -NET "four_bit_switches<0>" LOC = "H12" |SLEW = SLOW |IOSTANDARD = "LVCMOS33"; -NET "four_bit_switches<1>" LOC = "H15" |SLEW = SLOW |IOSTANDARD = "LVCMOS33"; -NET "four_bit_switches<2>" LOC = "F14" |SLEW = SLOW |IOSTANDARD = "LVCMOS33"; -NET "four_bit_switches<3>" LOC = "F15" |SLEW = SLOW |IOSTANDARD = "LVCMOS33"; +NET "four_bit_switches<0>" LOC = "H12" | SLEW = SLOW | IOSTANDARD = "LVCMOS33"; +NET "four_bit_switches<1>" LOC = "H15" | SLEW = SLOW | IOSTANDARD = "LVCMOS33"; +NET "four_bit_switches<2>" LOC = "F14" | SLEW = SLOW | IOSTANDARD = "LVCMOS33"; +NET "four_bit_switches<3>" LOC = "F15" | SLEW = SLOW | IOSTANDARD = "LVCMOS33"; -NET "eight_bit_switches<0>" LOC = "E16" |SLEW = SLOW |IOSTANDARD = "LVCMOS33"; -NET "eight_bit_switches<1>" LOC = "C17" |SLEW = SLOW |IOSTANDARD = "LVCMOS33"; -NET "eight_bit_switches<2>" LOC = "C15" |SLEW = SLOW |IOSTANDARD = "LVCMOS33"; -NET "eight_bit_switches<3>" LOC = "B14" |SLEW = SLOW |IOSTANDARD = "LVCMOS33"; -NET "eight_bit_switches<4>" LOC = "J13" |SLEW = SLOW |IOSTANDARD = "LVCMOS33"; -NET "eight_bit_switches<5>" LOC = "H13" |SLEW = SLOW |IOSTANDARD = "LVCMOS33"; -NET "eight_bit_switches<6>" LOC = "G16" |SLEW = SLOW |IOSTANDARD = "LVCMOS33"; -NET "eight_bit_switches<7>" LOC = "F17" |SLEW = SLOW |IOSTANDARD = "LVCMOS33"; +NET "eight_bit_switches<0>" LOC = "E16" | SLEW = SLOW | IOSTANDARD = "LVCMOS33"; +NET "eight_bit_switches<1>" LOC = "C17" | SLEW = SLOW | IOSTANDARD = "LVCMOS33"; +NET "eight_bit_switches<2>" LOC = "C15" | SLEW = SLOW | IOSTANDARD = "LVCMOS33"; +NET "eight_bit_switches<3>" LOC = "B14" | SLEW = SLOW | IOSTANDARD = "LVCMOS33"; +NET "eight_bit_switches<4>" LOC = "J13" | SLEW = SLOW | IOSTANDARD = "LVCMOS33"; +NET "eight_bit_switches<5>" LOC = "H13" | SLEW = SLOW | IOSTANDARD = "LVCMOS33"; +NET "eight_bit_switches<6>" LOC = "G16" | SLEW = SLOW | IOSTANDARD = "LVCMOS33"; +NET "eight_bit_switches<7>" LOC = "F17" | SLEW = SLOW | IOSTANDARD = "LVCMOS33"; -NET "sseg_mux<0>" LOC = "U11" |IOSTANDARD = "LVCMOS33"; -NET "sseg_mux<1>" LOC = "R8" |IOSTANDARD = "LVCMOS33"; -NET "sseg_mux<2>" LOC = "U8" |IOSTANDARD = "LVCMOS33"; -NET "sseg_mux<3>" LOC = "T6" |IOSTANDARD = "LVCMOS33"; +NET "sseg_mux<0>" LOC = "U11" | IOSTANDARD = "LVCMOS33"; +NET "sseg_mux<1>" LOC = "R8" | IOSTANDARD = "LVCMOS33"; +NET "sseg_mux<2>" LOC = "U8" | IOSTANDARD = "LVCMOS33"; +NET "sseg_mux<3>" LOC = "T6" | IOSTANDARD = "LVCMOS33"; + +NET "sseg_data<0>" LOC = "U5" | IOSTANDARD = "LVCMOS33"; +NET "sseg_data<1>" LOC = "T4" | IOSTANDARD = "LVCMOS33"; +NET "sseg_data<2>" LOC = "V4" | IOSTANDARD = "LVCMOS33"; +NET "sseg_data<3>" LOC = "V5" | IOSTANDARD = "LVCMOS33"; +NET "sseg_data<4>" LOC = "V6" | IOSTANDARD = "LVCMOS33"; +NET "sseg_data<5>" LOC = "V8" | IOSTANDARD = "LVCMOS33"; +NET "sseg_data<6>" LOC = "T8" | IOSTANDARD = "LVCMOS33"; +NET "sseg_data<7>" LOC = "V11" | IOSTANDARD = "LVCMOS33"; -NET "sseg_data<0>" LOC = "U5" |IOSTANDARD = "LVCMOS33"; -NET "sseg_data<1>" LOC = "T4" |IOSTANDARD = "LVCMOS33"; -NET "sseg_data<2>" LOC = "V4" |IOSTANDARD = "LVCMOS33"; -NET "sseg_data<3>" LOC = "V5" |IOSTANDARD = "LVCMOS33"; -NET "sseg_data<4>" LOC = "V6" |IOSTANDARD = "LVCMOS33"; -NET "sseg_data<5>" LOC = "V8" |IOSTANDARD = "LVCMOS33"; -NET "sseg_data<6>" LOC = "T8" |IOSTANDARD = "LVCMOS33"; -NET "sseg_data<7>" LOC = "V11" |IOSTANDARD = "LVCMOS33"; -#Created by Constraints Editor (xc6slx9-csg324-3) - 2014/01/09 -NET "clk" TNM_NET = clk; diff --git a/fpga/gpmc/xilinx/numato/spartan6/xc6slx9/ulab_debug_interface.xise b/fpga/gpmc/xilinx/numato/spartan6/xc6slx9/ulab_debug_interface.xise index f418fb2..565fe9a 100644 --- a/fpga/gpmc/xilinx/numato/spartan6/xc6slx9/ulab_debug_interface.xise +++ b/fpga/gpmc/xilinx/numato/spartan6/xc6slx9/ulab_debug_interface.xise @@ -326,6 +326,7 @@ + diff --git a/fpga/xilinx/programmer/bit2svf/bit2svf.c b/fpga/xilinx/programmer/bit2svf/bit2svf.c index 1bd9ac3..9c42f65 100644 --- a/fpga/xilinx/programmer/bit2svf/bit2svf.c +++ b/fpga/xilinx/programmer/bit2svf/bit2svf.c @@ -292,6 +292,6 @@ int main(int argc, char *argv[]) fclose(bitfile); freebh(&bh); - fprintf(stderr,"Process finsished sucefully.\n"); + fprintf(stderr,"Process finished successfully.\n"); return 0; }