Skip to content

Commit a073f42

Browse files
author
Chris Stratton
committed
Capture data to memory, play back with crude sorta-spi
1 parent ee38eec commit a073f42

File tree

2 files changed

+69
-21
lines changed

2 files changed

+69
-21
lines changed

top.ucf

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
NET "clk" IOSTANDARD = LVCMOS33;
22
NET "clk" LOC = P83;
3-
NET "rst" IOSTANDARD = LVCMOS33;
4-
NET "rst" LOC = P84;
3+
#NET "rst" IOSTANDARD = LVCMOS33;
4+
#NET "rst" LOC = P84;
55
NET "adc_clk" IOSTANDARD = LVCMOS33;
66
NET "adc_clk" LOC = P91; #P4;
77
NET "adc_d[0]" IOSTANDARD = LVCMOS33;
@@ -19,6 +19,8 @@ NET "adc_d[5]" LOC = P18;
1919
NET "adc_d[6]" LOC = P24 | IOSTANDARD = LVCMOS33;
2020
NET "adc_d[7]" LOC = P27 | IOSTANDARD = LVCMOS33;
2121

22+
NET "status" LOC = P70 | IOSTANDARD = LVCMOS33; //PA3 RX2
23+
2224
NET "a" IOSTANDARD = LVCMOS33;
2325
NET "a" LOC = P66;
2426
NET "b" IOSTANDARD = LVCMOS33;

top.v

+65-19
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,42 @@
1919
//
2020
//////////////////////////////////////////////////////////////////////////////////
2121
module top(
22-
input clk,
23-
input rst,
22+
input clk,
23+
// input rst,
2424
// output [15:0] tp,
25-
output a,
26-
output b,
27-
output c,
28-
input spi_clk, spi_mosi, spi_ssel_n,
29-
output spi_miso,
30-
input [7:0] adc_d,
31-
input adc_clk,
32-
output led
25+
output a,
26+
output b,
27+
output c,
28+
input spi_clk, spi_mosi, spi_ssel_n,
29+
output spi_miso,
30+
input [7:0] adc_d,
31+
input adc_clk,
32+
output led,
33+
output status
3334
);
3435

3536
reg [23:0] count;
3637
reg [2:0] spi_clk_reg;
3738
reg spi_mosi_reg;
3839
reg [15:0] spi_idr;
39-
reg ssel_reg;
40+
reg [2:0] ssel_reg;
4041
reg [7:0] spi_odr;
42+
43+
//2Kx9 2048 8 1 (7:0) (0:0) (10:0) RAMB16_S9 18K
44+
reg mem_we;
45+
reg [7:0] mem_data;
46+
reg [7:0] mem[8191:0];
47+
reg [7:0] mem_q;
48+
reg [12:0] mem_addr;
49+
50+
reg [2:0] bitcnt;
51+
52+
53+
always @(posedge adc_clk) begin
54+
mem_q <= mem[mem_addr];
55+
if (mem_we) mem[mem_addr] <= mem_data;
56+
end
57+
4158

4259
// assign tp = count;
4360
assign a = clk;
@@ -46,25 +63,54 @@ module top(
4663

4764
// assign spi_miso = (spi_ssel_n) ? 1'bz : spi_odr[7];
4865
assign spi_miso = spi_odr[7];
49-
66+
assign status = mem_we;
5067
// assign adc_clk = clk;
5168
assign led = (spi_idr[15]) ? count[20] : count[23];
52-
69+
70+
5371
always @(posedge adc_clk) begin
72+
if (spi_mosi_reg)
73+
mem_data <= mem_addr[7:0];
74+
else
75+
mem_data <= adc_d;
5476
count <= count + 1'b1;
5577

56-
ssel_reg <= ~spi_ssel_n;
78+
ssel_reg <= {ssel_reg[1:0], ~spi_ssel_n};
5779
spi_clk_reg <= {spi_clk_reg[1:0], spi_clk};
5880
spi_mosi_reg <= spi_mosi;
5981

60-
if (ssel_reg == 1'b1) begin
61-
if (spi_clk_reg == 3'b001) begin
82+
// if (ssel_reg == 1'b1) begin
83+
// if (sese
84+
if (ssel_reg == 3'b011) begin
85+
mem_addr <= 1'b0;
86+
mem_we <= 1'b0;
87+
bitcnt <= 7;
88+
end
89+
if (ssel_reg == 3'b100) begin
90+
mem_addr <= 0;
91+
mem_addr <= 1'b1;
92+
mem_we <= 1'b1;
93+
end
94+
if (ssel_reg == 3'b111) begin
95+
if (spi_clk_reg == 3'b011) begin
6296
spi_idr <= {spi_idr[14:0], spi_mosi_reg};
63-
spi_odr <= {spi_odr[6:0], spi_idr[7]};
97+
//spi_odr <= {spi_odr[6:0], spi_idr[7]};
98+
bitcnt <= bitcnt + 1;
99+
if (bitcnt == 5)
100+
mem_addr <= mem_addr + 1;
101+
if (bitcnt == 7)
102+
spi_odr <= mem_q;
103+
else
104+
spi_odr <= {spi_odr[6:0], 1'b0};
64105
end
65106
end
66-
else begin
67-
spi_odr <= adc_d;
107+
if (ssel_reg == 3'b000) begin
108+
if (mem_addr != 13'b1111111111111) begin
109+
mem_addr <= mem_addr + 1;
110+
end
111+
else begin
112+
mem_we <= 1'b0;
113+
end
68114
end
69115
end
70116

0 commit comments

Comments
 (0)