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;
}