EPCS도 안되는데 SDRAM은 뺄까...
Platform Designer에서 경고가 뜨는데
epcs_flash_controller에 conduit을 연결해야 한다고 한다.
그런데 EPCS/EPCQx1 에 대해서 Conduit은 필수는 아니라고 하는데 다른건가?
[링크 : https://www.altera.com/en_US/pdfs/literature/ug/ug_nios2_flash_programmer.pdf]
DE0_Nano_QSYS_DEMO
DE0_Nano.v
Platform Designer랑 내용이 많이 다른 느낌인데...
어느정도는 자동생성하고 나서 손으로 한땀한땀(?) 연결시켜주는 기분?
DE0_Nano_SOPC DE0_Nano_SOPC_inst( // the_epcs .data0_to_the_epcs(EPCS_DATA0), .dclk_from_the_epcs(EPCS_DCLK), .sce_from_the_epcs(EPCS_NCSO), .sdo_from_the_epcs(EPCS_ASDO), // the_sdram .zs_addr_from_the_sdram(DRAM_ADDR), .zs_ba_from_the_sdram(DRAM_BA), .zs_cas_n_from_the_sdram(DRAM_CAS_N), .zs_cke_from_the_sdram(DRAM_CKE), .zs_cs_n_from_the_sdram(DRAM_CS_N), .zs_dq_to_and_from_the_sdram(DRAM_DQ), .zs_dqm_from_the_sdram(DRAM_DQM), .zs_ras_n_from_the_sdram(DRAM_RAS_N), .zs_we_n_from_the_sdram(DRAM_WE_N), ); |
DE0_Nano_SOPC.v
module DE0_Nano_SOPC ( output wire [12:0] zs_addr_from_the_sdram, // sdram_wire.addr output wire [1:0] zs_ba_from_the_sdram, // .ba output wire zs_cas_n_from_the_sdram, // .cas_n output wire zs_cke_from_the_sdram, // .cke output wire zs_cs_n_from_the_sdram, // .cs_n inout wire [15:0] zs_dq_to_and_from_the_sdram, // .dq output wire [1:0] zs_dqm_from_the_sdram, // .dqm output wire zs_ras_n_from_the_sdram, // .ras_n output wire zs_we_n_from_the_sdram, // .we_n output wire altpll_sys, // c0_out_clk.clk output wire altpll_sdram, // altpll_sys_c1.clk output wire altpll_io, // c2_out_clk.clk output wire altpll_sys_c3_out, // altpll_sys_c3.clk output wire altpll_adc, // c4_out_clk.clk output wire locked_from_the_altpll_sys, // altpll_sys_locked_conduit.export output wire phasedone_from_the_altpll_sys, // altpll_sys_phasedone_conduit.export input wire in_port_to_the_g_sensor_int, // g_sensor_int_external_connection.export output wire dclk_from_the_epcs, // epcs_external.dclk output wire sce_from_the_epcs, // .sce output wire sdo_from_the_epcs, // .sdo input wire data0_to_the_epcs, // .data0 ); DE0_Nano_SOPC_sdram sdram ( .clk (altpll_sys), // clk.clk .reset_n (~rst_controller_002_reset_out_reset), // reset.reset_n .az_addr (sdram_s1_translator_avalon_anti_slave_0_address), // s1.address .az_be_n (~sdram_s1_translator_avalon_anti_slave_0_byteenable), // .byteenable_n .az_cs (sdram_s1_translator_avalon_anti_slave_0_chipselect), // .chipselect .az_data (sdram_s1_translator_avalon_anti_slave_0_writedata), // .writedata .az_rd_n (~sdram_s1_translator_avalon_anti_slave_0_read), // .read_n .az_wr_n (~sdram_s1_translator_avalon_anti_slave_0_write), // .write_n .za_data (sdram_s1_translator_avalon_anti_slave_0_readdata), // .readdata .za_valid (sdram_s1_translator_avalon_anti_slave_0_readdatavalid), // .readdatavalid .za_waitrequest (sdram_s1_translator_avalon_anti_slave_0_waitrequest), // .waitrequest .zs_addr (zs_addr_from_the_sdram), // wire.export .zs_ba (zs_ba_from_the_sdram), // .export .zs_cas_n (zs_cas_n_from_the_sdram), // .export .zs_cke (zs_cke_from_the_sdram), // .export .zs_cs_n (zs_cs_n_from_the_sdram), // .export .zs_dq (zs_dq_to_and_from_the_sdram), // .export .zs_dqm (zs_dqm_from_the_sdram), // .export .zs_ras_n (zs_ras_n_from_the_sdram), // .export .zs_we_n (zs_we_n_from_the_sdram) // .export ); DE0_Nano_SOPC_epcs epcs ( .clk (clk_50), // clk.clk .reset_n (~rst_controller_001_reset_out_reset), // reset.reset_n .address (epcs_epcs_control_port_translator_avalon_anti_slave_0_address), // epcs_control_port.address .chipselect (epcs_epcs_control_port_translator_avalon_anti_slave_0_chipselect), // .chipselect .dataavailable (), // .dataavailable .endofpacket (), // .endofpacket .read_n (~epcs_epcs_control_port_translator_avalon_anti_slave_0_read), // .read_n .readdata (epcs_epcs_control_port_translator_avalon_anti_slave_0_readdata), // .readdata .readyfordata (), // .readyfordata .write_n (~epcs_epcs_control_port_translator_avalon_anti_slave_0_write), // .write_n .writedata (epcs_epcs_control_port_translator_avalon_anti_slave_0_writedata), // .writedata .irq (irq_synchronizer_004_receiver_irq), // irq.irq .dclk (dclk_from_the_epcs), // external.export .sce (sce_from_the_epcs), // .export .sdo (sdo_from_the_epcs), // .export .data0 (data0_to_the_epcs) // .export ); |
DE0_NANO_SDRAM_Nios_Test
altpll에서 한개를 분기해서 쓰는데 정작 altpll_sdram이라고 이름지어준 애는 안쓰냐 -ㅁ-?
기본값은 width 32/row 12/col 8인데
width 16/ row 13/col 9으로 해주면 32MB로 생성 되는 듯
이건.. 데이터시트 보고 씨름해야 하니 패스
sdram에는 클럭이 연결 되어야 하는구나..
일단 c0는 100MHz로 2배 뻥튀기 해서 제공된다.
---
내가 생성한 파일에는 export 부분에 변수가 연결이 없다.
unsaved_epcs_flash_controller_0 epcs_flash_controller_0 ( .clk (clk_clk), // clk.clk .reset_n (~rst_controller_reset_out_reset), // reset.reset_n .reset_req (rst_controller_reset_out_reset_req), // .reset_req .address (mm_interconnect_0_epcs_flash_controller_0_epcs_control_port_address), // epcs_control_port.address .chipselect (mm_interconnect_0_epcs_flash_controller_0_epcs_control_port_chipselect), // .chipselect .read_n (~mm_interconnect_0_epcs_flash_controller_0_epcs_control_port_read), // .read_n .readdata (mm_interconnect_0_epcs_flash_controller_0_epcs_control_port_readdata), // .readdata .write_n (~mm_interconnect_0_epcs_flash_controller_0_epcs_control_port_write), // .write_n .writedata (mm_interconnect_0_epcs_flash_controller_0_epcs_control_port_writedata), // .writedata .irq (irq_mapper_receiver1_irq), // irq.irq .dclk (), // external.export .sce (), // .export .sdo (), // .export .data0 () // .export );
|
+
conduit 추가하니까
module unsaved ( input wire clk_clk, // clk.clk output wire [7:0] pio_0_external_connection_export, // pio_0_external_connection.export input wire reset_reset_n // reset.reset_n ); |
그와 연결된 핀들도 추가된다. 신기하네..
module unsaved ( input wire clk_clk, // clk.clk output wire epcs_dclk, // epcs.dclk output wire epcs_sce, // .sce output wire epcs_sdo, // .sdo input wire epcs_data0, // .data0 output wire [7:0] pio_0_external_connection_export, // pio_0_external_connection.export input wire reset_reset_n, // reset.reset_n output wire [12:0] sdram_addr, // sdram.addr output wire [1:0] sdram_ba, // .ba output wire sdram_cas_n, // .cas_n output wire sdram_cke, // .cke output wire sdram_cs_n, // .cs_n inout wire [31:0] sdram_dq, // .dq output wire [3:0] sdram_dqm, // .dqm output wire sdram_ras_n, // .ras_n output wire sdram_we_n // .we_n ); |
+
SDRAM bit width와 row, column이 안 맞으면 요런에러가 뜬다
Error (13076): The node has multiple drivers due to the always-enabled I/O buffer |
[링크 : http://www.alteraforum.com/forum/showthread.php?t=19370]
ftp://ftp.altera.com/up/pub/Altera_Material/13.1/Tutorials/DE0-Nano/Using_DE0-Nano_Flash.pdf
'embeded > FPGA - ALTERA' 카테고리의 다른 글
clock bridge (0) | 2018.02.03 |
---|---|
끄아아아아아 EPCS 안돼 ㅠㅠ (4) | 2018.02.03 |
altera speed grade (0) | 2018.02.03 |
Nios II 조금 감 잡은듯 (0) | 2018.02.02 |
xilinx easypath / Altera hardcopy (0) | 2018.02.02 |