Commit 95bcaf82 authored by Andrey Filippov's avatar Andrey Filippov

Fixed frame sequencers command output (ignored busy before)

parent 15f593e1
[*] [*]
[*] GTKWave Analyzer v3.3.66 (w)1999-2015 BSI [*] GTKWave Analyzer v3.3.66 (w)1999-2015 BSI
[*] Thu Sep 1 04:51:15 2016 [*] Thu Sep 1 21:10:54 2016
[*] [*]
[dumpfile] "/home/eyesis/git/x393-neon/simulation/x393_dut-20160830202606545.fst" [dumpfile] "/home/eyesis/git/x393-neon/simulation/x393_dut-20160901133543970.fst"
[dumpfile_mtime] "Wed Aug 31 03:39:41 2016" [dumpfile_mtime] "Thu Sep 1 20:31:46 2016"
[dumpfile_size] 281513830 [dumpfile_size] 118208746
[savefile] "/home/eyesis/git/x393-neon/cocotb/x393_cocotb_02.sav" [savefile] "/home/eyesis/git/x393-neon/cocotb/x393_cocotb_02.sav"
[timestart] 0 [timestart] 115264800
[size] 1836 1171 [size] 1836 1171
[pos] 1920 23 [pos] 1920 23
*-26.061598 53377388 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 *-15.820814 115547388 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
[treeopen] x393_dut. [treeopen] x393_dut.
[treeopen] x393_dut.ddr3_i.ddr3_i. [treeopen] x393_dut.ddr3_i.ddr3_i.
[treeopen] x393_dut.simul_axi_master_wdata_i. [treeopen] x393_dut.simul_axi_master_wdata_i.
[treeopen] x393_dut.x393_i. [treeopen] x393_dut.x393_i.
[treeopen] x393_dut.x393_i.cmd_mux_i.
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0]. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_pixel_buf_iface_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_pixel_buf_iface_i.
...@@ -28,6 +29,7 @@ ...@@ -28,6 +29,7 @@
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i.
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i.cmprs_pixel_buf_iface_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i.cmprs_pixel_buf_iface_i.
[treeopen] x393_dut.x393_i.compressor393_i.genblk3.cmprs_afi0_mux_i. [treeopen] x393_dut.x393_i.compressor393_i.genblk3.cmprs_afi0_mux_i.
[treeopen] x393_dut.x393_i.frame_sequencer_block[0].
[treeopen] x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i. [treeopen] x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.
[treeopen] x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i. [treeopen] x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.
[treeopen] x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_i. [treeopen] x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_i.
...@@ -43,7 +45,7 @@ ...@@ -43,7 +45,7 @@
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[2]. [treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[2].
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[3]. [treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[3].
[treeopen] x393_dut.x393_i.timing393_i. [treeopen] x393_dut.x393_i.timing393_i.
[sst_width] 440 [sst_width] 266
[signals_width] 293 [signals_width] 293
[sst_expanded] 1 [sst_expanded] 1
[sst_vpaned_height] 540 [sst_vpaned_height] 540
...@@ -295,7 +297,7 @@ x393_dut.x393_i.sync_resets_i.rst_early_master ...@@ -295,7 +297,7 @@ x393_dut.x393_i.sync_resets_i.rst_early_master
-linescan0 -linescan0
@1000200 @1000200
-linescan0 -linescan0
@800200 @c00200
-tiled0 -tiled0
@28 @28
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.frame_en x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.frame_en
...@@ -342,6 +344,7 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_macrob ...@@ -342,6 +344,7 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_macrob
@1000200 @1000200
-compressor_address -compressor_address
-rbuffer0 -rbuffer0
@1401200
-tiled0 -tiled0
@800200 @800200
-rtc -rtc
...@@ -821,7 +824,7 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].jp_channel_i.buf_pxd[7:0] ...@@ -821,7 +824,7 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].jp_channel_i.buf_pxd[7:0]
x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i.buf_pxd[7:0] x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i.buf_pxd[7:0]
@1401200 @1401200
-compressors_all -compressors_all
@c00200 @800200
-cmdseq_0 -cmdseq_0
@28 @28
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.frame_sync x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.frame_sync
...@@ -991,6 +994,8 @@ x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.cmd_we_ctl_w ...@@ -991,6 +994,8 @@ x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.cmd_we_ctl_w
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.seq_enrun x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.seq_enrun
@22 @22
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.fifo_wr_pointers_outr_r[5:0] x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.fifo_wr_pointers_outr_r[5:0]
@28
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.pre_cmd_seq_w
@800028 @800028
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.ren[1:0] x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.ren[1:0]
@28 @28
...@@ -1000,6 +1005,10 @@ x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.ren[1:0] ...@@ -1000,6 +1005,10 @@ x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.ren[1:0]
-group_end -group_end
@22 @22
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.rpointer[5:0] x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.rpointer[5:0]
[color] 7
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.waddr[13:0]
[color] 7
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.wdata[31:0]
@28 @28
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.commands_pending x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.commands_pending
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.pre_cmd_seq_w x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.pre_cmd_seq_w
...@@ -1013,11 +1022,13 @@ x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.read_busy[1:0] ...@@ -1013,11 +1022,13 @@ x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.read_busy[1:0]
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.conf_send x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.conf_send
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.valid x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.valid
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.ackn x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.ackn
@29
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.mclk
@1001200 @1001200
-group_end -group_end
@1401200 @1000200
-cmdseq_0 -cmdseq_0
@c00200 @800200
-cmdseq_mux -cmdseq_mux
@22 @22
x393_dut.x393_i.cmd_seq_mux_i.frame_num0[3:0] x393_dut.x393_i.cmd_seq_mux_i.frame_num0[3:0]
...@@ -1065,9 +1076,67 @@ x393_dut.x393_i.cmd_seq_mux_i.pri_enc_w[1:0] ...@@ -1065,9 +1076,67 @@ x393_dut.x393_i.cmd_seq_mux_i.pri_enc_w[1:0]
x393_dut.x393_i.cmd_seq_mux_i.pri_one[3:0] x393_dut.x393_i.cmd_seq_mux_i.pri_one[3:0]
@28 @28
x393_dut.x393_i.cmd_seq_mux_i.chn_r[1:0] x393_dut.x393_i.cmd_seq_mux_i.chn_r[1:0]
@1401200 @1000200
-cmdseq_mux -cmdseq_mux
@c00200 @800200
-cmd_mux
@22
x393_dut.x393_i.cmd_mux_i.pre_waddr[13:0]
@28
x393_dut.x393_i.cmd_mux_i.start_wburst
@22
x393_dut.x393_i.cmd_mux_i.waddr[13:0]
@28
x393_dut.x393_i.cmd_mux_i.wr_en
@22
x393_dut.x393_i.cmd_mux_i.wdata[31:0]
x393_dut.x393_i.cmd_mux_i.cseq_waddr[13:0]
@28
x393_dut.x393_i.cmd_mux_i.cseq_wr_en
@22
x393_dut.x393_i.cmd_mux_i.cseq_wdata[31:0]
@28
x393_dut.x393_i.cmd_mux_i.cseq_ackn
@200
-
@22
x393_dut.x393_i.cmd_mux_i.par_waddr[13:0]
x393_dut.x393_i.cmd_mux_i.par_data[31:0]
x393_dut.x393_i.cmd_mux_i.byte_ad[7:0]
@28
x393_dut.x393_i.cmd_mux_i.ad_stb
@200
-
@28
x393_dut.x393_i.cmd_mux_i.cmdseq_full_r
x393_dut.x393_i.cmd_mux_i.fifo_nempty
x393_dut.x393_i.cmd_mux_i.fifo_half_empty
x393_dut.x393_i.cmd_mux_i.can_start_w
@c00022
x393_dut.x393_i.cmd_mux_i.seq_busy_r[4:0]
@28
(0)x393_dut.x393_i.cmd_mux_i.seq_busy_r[4:0]
(1)x393_dut.x393_i.cmd_mux_i.seq_busy_r[4:0]
(2)x393_dut.x393_i.cmd_mux_i.seq_busy_r[4:0]
(3)x393_dut.x393_i.cmd_mux_i.seq_busy_r[4:0]
(4)x393_dut.x393_i.cmd_mux_i.seq_busy_r[4:0]
@1401200
-group_end
@28
x393_dut.x393_i.cmd_mux_i.start_axi_w
x393_dut.x393_i.cmd_mux_i.start_wburst
@1000200
-cmd_mux
@800200
-readback
@28
x393_dut.x393_i.cmd_readback_i.we
@22
x393_dut.x393_i.cmd_readback_i.waddr[10:0]
x393_dut.x393_i.cmd_readback_i.wdata[31:0]
@1000200
-readback
@800200
-gpio -gpio
@28 @28
x393_dut.x393_i.gpio393_i.set_mode_w x393_dut.x393_i.gpio393_i.set_mode_w
...@@ -1163,7 +1232,7 @@ x393_dut.x393_i.gpio393_i.io_pins[9:0] ...@@ -1163,7 +1232,7 @@ x393_dut.x393_i.gpio393_i.io_pins[9:0]
(9)x393_dut.x393_i.gpio393_i.io_pins[9:0] (9)x393_dut.x393_i.gpio393_i.io_pins[9:0]
@1001200 @1001200
-group_end -group_end
@1401200 @1000200
-gpio -gpio
@c00200 @c00200
-sensor_channel1 -sensor_channel1
...@@ -1748,7 +1817,6 @@ x393_dut.simul_axi_master_wdata_i.simul_axi_fifo_i.valid ...@@ -1748,7 +1817,6 @@ x393_dut.simul_axi_master_wdata_i.simul_axi_fifo_i.valid
-frames -frames
@22 @22
x393_dut.x393_i.frame_num[15:0] x393_dut.x393_i.frame_num[15:0]
@23
x393_dut.x393_i.frame_num_compressed[15:0] x393_dut.x393_i.frame_num_compressed[15:0]
@200 @200
- -
......
...@@ -35,7 +35,8 @@ ...@@ -35,7 +35,8 @@
* contains all the components and scripts required to completely simulate it * contains all the components and scripts required to completely simulate it
* with at least one of the Free Software programs. * with at least one of the Free Software programs.
*/ */
parameter FPGA_VERSION = 32'h039300a7; // parallel, chnging parameter to reset buffer pages at each frame start. 79.4%, -0.022 (2 paths) parameter FPGA_VERSION = 32'h039300a8; // parallel, fixing BUG in command sequencer that was missing some commands 79.25%, all met
// parameter FPGA_VERSION = 32'h039300a7; // parallel, changing parameter to reset buffer pages at each frame start. 79.4%, -0.022 (2 paths)
// parameter FPGA_VERSION = 32'h039300a6; // parallel, adding frame sync delays to mcntrl_linear 79.26, mclk and xclk violated // parameter FPGA_VERSION = 32'h039300a6; // parallel, adding frame sync delays to mcntrl_linear 79.26, mclk and xclk violated
// parameter FPGA_VERSION = 32'h039300a5; // parallel, fixing command sequencer and ARO 80.21%, -0.068 // parameter FPGA_VERSION = 32'h039300a5; // parallel, fixing command sequencer and ARO 80.21%, -0.068
// parameter FPGA_VERSION = 32'h039300a4; // parallel 79.66, -0.1 // parameter FPGA_VERSION = 32'h039300a4; // parallel 79.66, -0.1
......
...@@ -1047,22 +1047,32 @@ print_status_sensor_io all ...@@ -1047,22 +1047,32 @@ print_status_sensor_io all
setup_all_sensors True None 0x4 setup_all_sensors True None 0x4
################## Parallel after drivers ##################
cd /usr/local/verilog/; test_mcntrl.py @hargs-after
specify_phys_memory
specify_window
set_rtc # maybe not needed as it can be set differently
camsync_setup 0xf # sensor mask - use local timestamps)
jpeg_write "img.jpeg" 0 80
################## Parallel ################## ################## Parallel ##################
cd /usr/local/verilog/; test_mcntrl.py @tpargs -x cd /usr/local/verilog/; test_mcntrl.py @tpargs -x
reset_channels 15
cd /usr/local/verilog/; test_mcntrl.py @hargs cd /usr/local/verilog/; test_mcntrl.py @hargs
bitstream_set_path /usr/local/verilog/x393_parallel.bit #bitstream_set_path /usr/local/verilog/x393_parallel.bit
#fpga_shutdown #fpga_shutdown
#setupSensorsPower "PAR12" #setupSensorsPower "PAR12" all 0 0.0
setupSensorsPower "PAR12" all 0 0.0 #measure_all "*DI"
#setSensorClock 24.0 "2V5_LVDS"
#set_rtc # maybe not needed as it can be set differently
#all above included hargs
measure_all "*DI"
setSensorClock 24.0 "2V5_LVDS"
specify_phys_memory
specify_window
set_rtc # maybe not needed as it can be set differently
camsync_setup 0xf # sensor mask - use local timestamps) camsync_setup 0xf # sensor mask - use local timestamps)
#later: #later:
...@@ -1328,10 +1338,19 @@ set_gpio_pins 0 1 # pin 0 low, pin 1 - high ...@@ -1328,10 +1338,19 @@ set_gpio_pins 0 1 # pin 0 low, pin 1 - high
#ctrl_cmd_frame_sequencer <num_sensor> <reset=False> <start=False> <stop=False> #ctrl_cmd_frame_sequencer <num_sensor> <reset=False> <start=False> <stop=False>
ctrl_cmd_frame_sequencer 0 0 1 0 ctrl_cmd_frame_sequencer 0 0 1 0
write_cmd_frame_sequencer 0 1 1 0x700 0x6 write_cmd_frame_sequencer 0 1 1 0x700 0x6
write_cmd_frame_sequencer 0 1 1 0x700 0x9
write_cmd_frame_sequencer 0 1 1 0x700 0xa0
write_cmd_frame_sequencer 0 1 1 0x700 0x50
write_cmd_frame_sequencer 0 0 3 0x700 0xa000 write_cmd_frame_sequencer 0 0 3 0x700 0xa000
write_cmd_frame_sequencer 0 1 0 0x700 0x90 write_cmd_frame_sequencer 0 1 0 0x700 0x90
write_cmd_frame_sequencer 0 0 2 0x700 0xe00 write_cmd_frame_sequencer 0 0 2 0x700 0xe00
write_cmd_frame_sequencer 0 0 3 0x700 0xa write_cmd_frame_sequencer 0 0 3 0x700 0xa
write_cmd_frame_sequencer 0 0 2 0x700 0x6
write_cmd_frame_sequencer 0 0 2 0x700 0x9
write_cmd_frame_sequencer 0 0 2 0x700 0x60
write_cmd_frame_sequencer 0 0 2 0x700 0x90
write_cmd_frame_sequencer 0 0 2 0x700 0x600
write_cmd_frame_sequencer 0 0 2 0x700 0x900
#set_sensor_io_dly_hispi all 0x48 0x68 0x68 0x68 0x68 #set_sensor_io_dly_hispi all 0x48 0x68 0x68 0x68 0x68
#set_sensor_io_ctl all None None None None None 1 None # load all delays? #set_sensor_io_ctl all None None None None None 1 None # load all delays?
......
...@@ -141,7 +141,9 @@ module cmd_frame_sequencer#( ...@@ -141,7 +141,9 @@ module cmd_frame_sequencer#(
reg [1:0] page_r_inc; // increment page_r - signal and delayed version reg [1:0] page_r_inc; // increment page_r - signal and delayed version
reg [PNTR_WIDH-1:0] rpointer; // FIFO read pointer for current page reg [PNTR_WIDH-1:0] rpointer; // FIFO read pointer for current page
reg [1:0] read_busy; // reading and sending command reg [1:0] read_busy; // reading and sending command
reg conf_send; // valid && ackn wire conf_send_w; // valid && ackn
reg conf_send_r; // valid && ackn
wire commands_pending; // wants to send some commands wire commands_pending; // wants to send some commands
reg [1:0] ren; // 1-hot ren to BRAM, then regen to BRAM reg [1:0] ren; // 1-hot ren to BRAM, then regen to BRAM
wire pre_cmd_seq_w; // 1 cycle before starting command read/send sequence wire pre_cmd_seq_w; // 1 cycle before starting command read/send sequence
...@@ -155,6 +157,7 @@ module cmd_frame_sequencer#( ...@@ -155,6 +157,7 @@ module cmd_frame_sequencer#(
wire irq_ctrl; wire irq_ctrl;
wire we_seq_data; wire we_seq_data;
assign conf_send_w = valid && ackn;
assign we_seq_data = data_cycle_r[2]; assign we_seq_data = data_cycle_r[2];
assign is = is_r; // interrupt status (not masked) assign is = is_r; // interrupt status (not masked)
...@@ -179,7 +182,8 @@ module cmd_frame_sequencer#( ...@@ -179,7 +182,8 @@ module cmd_frame_sequencer#(
assign pre_wpage_inc = (!cmd_we && !(|cmd_we_r) ) && ((next_frame_rq && !wpage_inc[0] && initialized) || reset_on) ; assign pre_wpage_inc = (!cmd_we && !(|cmd_we_r) ) && ((next_frame_rq && !wpage_inc[0] && initialized) || reset_on) ;
assign commands_pending = rpointer != fifo_wr_pointers_outr_r; // only look at the current page different pages will trigger page increment first assign commands_pending = rpointer != fifo_wr_pointers_outr_r; // only look at the current page different pages will trigger page increment first
// assign pre_cmd_seq_w = commands_pending & ~(|page_r_inc) & seq_enrun; // assign pre_cmd_seq_w = commands_pending & ~(|page_r_inc) & seq_enrun;
assign pre_cmd_seq_w = commands_pending & ~(|page_r_inc) & seq_enrun && !ren[0]; // counter lags // assign pre_cmd_seq_w = commands_pending & ~(|page_r_inc) & seq_enrun && !ren[0]; // counter lags
assign pre_cmd_seq_w = commands_pending & ~(|page_r_inc) & seq_enrun && !read_busy[0]; // counter lags
// //
assign valid = valid_r; assign valid = valid_r;
...@@ -285,7 +289,8 @@ module cmd_frame_sequencer#( ...@@ -285,7 +289,8 @@ module cmd_frame_sequencer#(
fifo_wr_pointers_outr_r <= fifo_wr_pointers_outr; // just register write pointer for the read page fifo_wr_pointers_outr_r <= fifo_wr_pointers_outr; // just register write pointer for the read page
page_r_inc <= {page_r_inc[0], page_r_inc <= {page_r_inc[0],
(~read_busy[0] | conf_send) & // not busy or will not be busy next cycle (when page_r_inc active) // (~read_busy[0] | conf_send_r) & // not busy or will not be busy next cycle (when page_r_inc active)
(~read_busy[0] | conf_send_w) & // not busy or will not be busy next cycle (when page_r_inc active)
~(|page_r_inc) & // read_page was not just incremented, so updated read pointer had a chance to propagate ~(|page_r_inc) & // read_page was not just incremented, so updated read pointer had a chance to propagate
(rpointer == fifo_wr_pointers_outr_r) & // nothing left in the frame FIFO pointed page_r (rpointer == fifo_wr_pointers_outr_r) & // nothing left in the frame FIFO pointed page_r
(page_r != wpage_asap)}; // the page commands are taken from is not the ASAP (current) page (page_r != wpage_asap)}; // the page commands are taken from is not the ASAP (current) page
...@@ -297,12 +302,13 @@ module cmd_frame_sequencer#( ...@@ -297,12 +302,13 @@ module cmd_frame_sequencer#(
if (!por[1] || reset_on || page_r_inc[0]) rpointer <= 0; // TODO: move to rst ? if (!por[1] || reset_on || page_r_inc[0]) rpointer <= 0; // TODO: move to rst ?
else if (ren[0]) rpointer <= rpointer + 1; else if (ren[0]) rpointer <= rpointer + 1;
conf_send <= valid && ackn; conf_send_r <= conf_send_w; // valid && ackn;
// if (reset_on || reset_cmd) read_busy <= 0; // if (reset_on || reset_cmd) read_busy <= 0;
if (!por[1] || reset_on) read_busy <= 0; if (!por[1] || reset_on) read_busy <= 0;
else read_busy <= {read_busy[0], else read_busy <= {read_busy[0],
read_busy[0]? (~conf_send) : pre_cmd_seq_w}; // read_busy[0]? (~conf_send_r) : pre_cmd_seq_w};
read_busy[0]? (~conf_send_w) : pre_cmd_seq_w};
ren <= {ren[0], pre_cmd_seq_w}; ren <= {ren[0], pre_cmd_seq_w};
// TODO: check generation of the reset sequence // TODO: check generation of the reset sequence
......
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment