Skip to content

Commit b20f8b2

Browse files
authored
Merge pull request #104 from the-snowwhite/work
Work
2 parents 5c32362 + be8665d commit b20f8b2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+89
-1532
lines changed

HW/QuartusProjects/.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
*.pin
5757
*.hex
5858
*.ddb
59-
#*.stp
59+
*.stp
6060
*.rar
6161
*.dpf
6262
*.qdf
@@ -82,3 +82,6 @@ software/
8282
stamp/
8383
# ignore qsys generated folder
8484
.qsys_edit/
85+
# ignore build generated files
86+
*.mif
87+
*.qip

HW/QuartusProjects/Common/capsense.sv

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@
88

99
module capsense
1010
(
11-
input clk, reset,
12-
input [num-1:0] sense,
13-
input [3:0] hysteresis [num-1:0],
14-
output [11:0] calibval_0,
15-
output [11:0] counts_0,
16-
output reg charge,
17-
output reg [num-1:0] touched
11+
input clk,
12+
input reset,
13+
input [num-1:0] sense,
14+
input [3:0] hysteresis [num-1:0],
15+
// output [11:0] calibval_0,
16+
// output [11:0] counts_0,
17+
output reg charge,
18+
output reg [num-1:0] touched
1819
);
1920

2021
parameter num = 4;
@@ -51,8 +52,8 @@ module capsense
5152

5253
wire [11:0] actual_count = period_count - counter;
5354

54-
assign calibval_0 = calibval[0];
55-
assign counts_0 = counts[0];
55+
// assign calibval_0 = calibval[0];
56+
// assign counts_0 = counts[0];
5657

5758
genvar ii;
5859
integer i1, i2, i3, i4, i5, i6, l1, l2, l3;

HW/QuartusProjects/Common/gpio_adr_decoder_reg.sv

Lines changed: 40 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ module gpio_adr_decoder_reg(
6464
output ADC_SDI_o,
6565
input ADC_SDO_i,
6666
// Touch sensor:
67-
output [11:0] calibval_0,
68-
output [13:0] counts_0,
67+
// output [11:0] calibval_0,
68+
// output [13:0] counts_0,
6969
output [NumSense-1:0] touched,
7070
input [1:0] buttons
7171
);
@@ -146,13 +146,20 @@ parameter TotalNumregs = Mux_regPrIOReg * NumIOAddrReg * NumPinsPrIOAddr;
146146
wire [31:0]adc_data_out;
147147

148148
// Touch sensor:
149+
reg [BusWidth-1:0] hysteresis_reg;
150+
reg [1:0]sr_delay;
151+
reg reset_sr;
152+
reg [2:0]sr_init_delay;
153+
reg reset_init_sr;
149154
wire [NumSense-1:0] sense;
150155
wire charge;
151-
reg [BusWidth-1:0] hysteresis_reg;
152156
wire [3:0] hysteresis[NumSense-1:0];
153-
154-
wire sense_reset = ~reset_reg_N | ~buttons[1];
155-
157+
158+
wire sr_delay_act;
159+
wire sr_init_delay_act;
160+
wire sense_reset;
161+
// wire sense_reset = ~reset_reg_N;
162+
156163
genvar sh;
157164
generate
158165
for(sh=0;sh<NumSense;sh=sh+1) begin : sense_hystloop
@@ -256,15 +263,35 @@ generate if (Capsense >= 1) begin
256263
// Writes:
257264
always @( posedge reset_in or posedge write_address) begin
258265
if (reset_in) begin
259-
hysteresis_reg <= 32'h11111111;
266+
hysteresis_reg <= 32'h22222222;
267+
reset_sr <= 1'b0;
260268
end
261269
else if ( write_address ) begin
262-
if (busaddress_r == 10'h0304) begin hysteresis_reg <= busdata_in_r; end
263-
end
270+
if (busaddress_r == 10'h0304) begin
271+
hysteresis_reg <= busdata_in_r;
272+
reset_sr <= 1'b1;
273+
end
274+
else begin
275+
hysteresis_reg <= hysteresis_reg;
276+
reset_sr <= 1'b0;
277+
end
278+
end
264279
end
265280
end
266281
endgenerate
267282

283+
always @(posedge reg_clk) begin
284+
sr_delay[0] <= reset_sr;
285+
sr_delay[1] <= sr_delay[0];
286+
sr_init_delay[0] <= reset_init_sr;
287+
sr_init_delay[1] <= sr_init_delay[0];
288+
sr_init_delay[2] <= sr_init_delay[1];
289+
end
290+
291+
assign sr_delay_act = (sr_delay[1] == 1'b1 && sr_delay[0] == 1'b0) ? 1'b1 : 1'b0;
292+
assign sr_init_delay_act = (sr_init_delay[2] == 1'b0 && sr_init_delay[0] == 1'b1) ? 1'b1 : 1'b0;
293+
assign sense_reset = ~reset_reg_N | ~buttons[1] | sr_delay_act | sr_init_delay_act;
294+
268295
genvar il;
269296
generate
270297
for(il=0;il<NumIOAddrReg;il=il+1) begin : reg_initloop
@@ -356,11 +383,12 @@ endgenerate
356383
always @(posedge reset_in or posedge read_address)begin
357384
if (reset_in)begin
358385
busdata_to_cpu <= 32'b0;
386+
reset_init_sr <= 1'b0;
359387
end
360388
else if (read_address) begin
361389
if (Capsense >= 1) begin
362390
if (adc_address_valid) begin busdata_to_cpu <= adc_data_out; end
363-
else if (busaddress_r == 'h0300) begin busdata_to_cpu <= touched; end
391+
else if (busaddress_r == 'h0300) begin busdata_to_cpu <= touched; reset_init_sr <= 1'b1; end
364392
else if (busaddress_r == 'h0304) begin busdata_to_cpu <= hysteresis_reg; end
365393
else if(busaddress_r == 'h1000) begin busdata_to_cpu <= {8'b0,gpio_input_data[0][23:0]}; end
366394
else if(busaddress_r == 'h1004) begin busdata_to_cpu <= {8'b0,gpio_input_data[1][11:0],gpio_input_data[0][35:24]}; end
@@ -422,8 +450,8 @@ generate if (Capsense >=1) begin
422450
.reset(sense_reset) , // input reset_sig
423451
.sense(sense) , // input [num-1:0] sense_sig
424452
.hysteresis(hysteresis),
425-
.calibval_0(calibval_0),
426-
.counts_0(counts_0),
453+
// .calibval_0(calibval_0),
454+
// .counts_0(counts_0),
427455
.charge(charge) , // output charge_sig
428456
.touched(touched) // output [num-1:0] touched_sig
429457
);

HW/QuartusProjects/DE0_Nano_SoC_Cramps/DE0_Nano_SoC_Cramps.qsf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -649,7 +649,7 @@ set_global_assignment -name ENABLE_SIGNALTAP OFF
649649
set_global_assignment -name SDC_FILE DE0_Nano_SoC_Cramps.sdc
650650
set_global_assignment -name VHDL_FILE ../Common/firmware_id.vhd
651651
set_global_assignment -name MIF_FILE firmware_id.mif
652-
set_global_assignment -name QIP_FILE hm3_DE0_Nano_SoC.qip
652+
set_global_assignment -name QIP_FILE hm3_DE0_Nano_SoC_Cramps.qip
653653
set_global_assignment -name QIP_FILE ../../hm2/hm3_socfpga.qip
654654
set_global_assignment -name QIP_FILE hm3_pin_config.qip
655655
set_global_assignment -name SYSTEMVERILOG_FILE ../Common/capsense.sv
@@ -663,4 +663,4 @@ set_global_assignment -name SYSTEMVERILOG_FILE ../Common/adc_ltc2308_fifo.sv
663663
set_global_assignment -name SYSTEMVERILOG_FILE ../Common/bidir_io.sv
664664
set_global_assignment -name SYSTEMVERILOG_FILE ../Common/gpio_adr_decoder_reg.sv
665665
set_global_assignment -name USE_SIGNALTAP_FILE stp1.stp
666-
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
666+
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top

HW/QuartusProjects/DE0_Nano_SoC_Cramps/DE0_Nano_SoC_Cramps.sv

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ parameter NumIOAddrReg = 6;
145145

146146

147147
// connection of internal logics
148-
assign LED[5:1] = fpga_led_internal;
148+
// assign LED[5:1] = fpga_led_internal;
149149
assign fpga_clk_50 = FPGA_CLK1_50;
150150
// assign stm_hw_events = {{15{1'b0}}, SW, fpga_led_internal, fpga_debounced_buttons};
151151
// hm2
@@ -176,6 +176,12 @@ parameter NumIOAddrReg = 6;
176176
wire int_sig;
177177
assign ARDUINO_IO[15] = int_sig;
178178

179+
// Capsense:
180+
wire [NumSense-1:0] touched;
181+
182+
// connection of internal logics
183+
assign LED[4:1] = touched;
184+
179185
//=======================================================
180186
// Structural coding
181187
//=======================================================
@@ -342,6 +348,8 @@ gpio_adr_decoder_reg gpio_adr_decoder_reg_inst
342348
.ADC_SCK_o(ADC_SCK), // output ADC_SCK_o_sig
343349
.ADC_SDI_o(ADC_SDI), // output ADC_SDI_o_sig
344350
.ADC_SDO_i(ADC_SDO), // input ADC_SDO_i_sig
351+
// CAP_Sensors
352+
.touched(touched),
345353
.buttons(fpga_debounced_buttons)
346354
);
347355

@@ -351,8 +359,9 @@ defparam gpio_adr_decoder_reg_inst.GPIOWidth = GPIOWidth;
351359
defparam gpio_adr_decoder_reg_inst.MuxGPIOIOWidth = MuxGPIOIOWidth;
352360
defparam gpio_adr_decoder_reg_inst.NumIOAddrReg = NumIOAddrReg;
353361
defparam gpio_adr_decoder_reg_inst.NumGPIO = NumGPIO;
362+
defparam gpio_adr_decoder_reg_inst.ADC = ADC;
354363
defparam gpio_adr_decoder_reg_inst.Capsense = Capsense;
355-
defparam gpio_adr_decoder_reg_inst.NumSense = 4;
364+
defparam gpio_adr_decoder_reg_inst.NumSense = NumSense;
356365

357366
HostMot3_cfg HostMot3_inst
358367
(

HW/QuartusProjects/DE0_Nano_SoC_Cramps/build.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ OUTPUTDIR=output_files
3131
set -e
3232

3333
# Path to the configuration files
34-
CONFIG_DIR="../../hm2/config/${BOARDNAME}"
34+
CONFIG_DIR="../../hm2/config/DExx_Nano_xxx_Cramps"
3535

3636

3737
# Routine to build a specific configuration
@@ -43,7 +43,7 @@ build_config() {
4343
# which means in rare instances it could match actual VHDL code. Here we use
4444
# the % character to support a batch-style variable scheme
4545
sed "s/%CONFIG%/${1}/g" <${CONFIG_DIR}/hm3_pin_config.in > hm3_pin_config.qip
46-
sed "s/%CONFIG%/${1}/g" <${CONFIG_DIR}/hm3_DE0_Nano_SoC.in > hm3_DE0_Nano_SoC.qip
46+
sed "s/%CONFIG%/${1}/g" <${CONFIG_DIR}/hm3_DExx_Nano_xxx_Cramps.in > hm3_${BOARDNAME}.qip
4747

4848
# Actually build the FPGA bit file
4949
make rbf

HW/QuartusProjects/DE0_Nano_SoC_Cramps/firmware_id.mif

Lines changed: 0 additions & 71 deletions
This file was deleted.

HW/QuartusProjects/DE0_Nano_SoC_Cramps/hm3_DE0_Nano_SoC.qip

Lines changed: 0 additions & 2 deletions
This file was deleted.

HW/QuartusProjects/DE0_Nano_SoC_Cramps/hm3_pin_config.qip

Lines changed: 0 additions & 2 deletions
This file was deleted.

HW/QuartusProjects/DE10_Nano_FB_Cramps/DE10_Nano_FB_Cramps.sv

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,12 @@ parameter NumIOAddrReg = 6;
144144

145145
wire lcd_clk;
146146

147+
wire [NumSense-1:0] touched;
147148
// connection of internal logics
148-
assign LED[5:1] = fpga_led_internal;
149-
assign fpga_clk_50 = FPGA_CLK1_50;
149+
// assign LED[5:1] = fpga_led_internal | {7'b0000000, led_level};
150+
assign LED[4:1] = touched;
151+
152+
assign fpga_clk_50=FPGA_CLK1_50;
150153
// assign stm_hw_events = {{15{1'b0}}, SW, fpga_led_internal, fpga_debounced_buttons};
151154
// hm2
152155
wire [AddrWidth-1:2] hm_address;
@@ -342,6 +345,7 @@ gpio_adr_decoder_reg gpio_adr_decoder_reg_inst
342345
.ADC_SCK_o(ADC_SCK), // output ADC_SCK_o_sig
343346
.ADC_SDI_o(ADC_SDI), // output ADC_SDI_o_sig
344347
.ADC_SDO_i(ADC_SDO), // input ADC_SDO_i_sig
348+
.touched(touched), // input ADC_SDO_i_sig
345349
.buttons(fpga_debounced_buttons)
346350
);
347351

@@ -351,8 +355,9 @@ defparam gpio_adr_decoder_reg_inst.GPIOWidth = GPIOWidth;
351355
defparam gpio_adr_decoder_reg_inst.MuxGPIOIOWidth = MuxGPIOIOWidth;
352356
defparam gpio_adr_decoder_reg_inst.NumIOAddrReg = NumIOAddrReg;
353357
defparam gpio_adr_decoder_reg_inst.NumGPIO = NumGPIO;
358+
defparam gpio_adr_decoder_reg_inst.ADC = ADC;
354359
defparam gpio_adr_decoder_reg_inst.Capsense = Capsense;
355-
defparam gpio_adr_decoder_reg_inst.NumSense = 4;
360+
defparam gpio_adr_decoder_reg_inst.NumSense = NumSense;
356361

357362
HostMot3_cfg HostMot3_inst
358363
(

0 commit comments

Comments
 (0)