📄 altmemddr_phy_alt_mem_phy_ciii.v
字号:
.width (1) ) addr_pin ( .aclr (reset_2x), .aset (), .datain_h (ac_2x_mux), .datain_l (ac_2x_r), .dataout (mem_ac), .oe (1'b1), .outclock (clk_2x), .outclocken (1'b1), .sset (), .sclr (), .oe_out () ); end end // Half-rate // full-rate else begin : full_rate always @(posedge phy_clk_1x) begin // 1t registering - only used if ctl_add_1t_ac_lat is true ac_1t <= ac_l; // add 1 addr_clock delay if "Add 1T" is set: if (ctl_add_1t_ac_lat == 1'b1) ac_2x <= ac_1t; else ac_2x <= ac_l; end always @(posedge clk_2x) begin ac_2x_deg_choice <= ac_2x; end // Note this is for 270 degree operation to align it to the correct clock phase. always @* begin casez(ctl_add_intermediate_regs) 1'b0 : ac_2x_r = ac_2x; 1'b1 : ac_2x_r = ac_2x_deg_choice; default : ac_2x_r = 1'bx; // X propagaton endcase end always @(posedge clk_2x) begin ac_2x_2r <= ac_2x_r; end // Determine whether to select the "_r" or "_2r" variant : always @* begin casez(ctl_negedge_en) 1'b0 : ac_2x_mux = ac_2x_r; 1'b1 : ac_2x_mux = ac_2x_2r; default : ac_2x_mux = 1'bx; // X propagaton endcase end if (POWER_UP_HIGH == 1) begin altddio_out #( .extend_oe_disable ("UNUSED"), .intended_device_family ("Cyclone III"), .lpm_hint ("UNUSED"), .lpm_type ("altddio_out"), .oe_reg ("UNUSED"), .power_up_high ("ON"), .width (1) ) addr_pin ( .aset (reset_2x), .datain_h (ac_2x_mux), .datain_l (ac_2x_r), .dataout (mem_ac), .oe (1'b1), .outclock (clk_2x), .outclocken (1'b1), .aclr (), .sclr (), .sset (), .oe_out () ); end else begin altddio_out #( .extend_oe_disable ("UNUSED"), .intended_device_family ("Cyclone III"), .lpm_hint ("UNUSED"), .lpm_type ("altddio_out"), .oe_reg ("UNUSED"), .power_up_high ("OFF"), .width (1) ) addr_pin ( .aclr (reset_2x), .datain_h (ac_2x_mux), .datain_l (ac_2x_r), .dataout (mem_ac), .oe (1'b1), .outclock (clk_2x), .outclocken (1'b1), .aset (), .sclr (), .sset (), .oe_out () ); end // else: !if(POWER_UP_HIGH == 1) end // block: full_rateendgenerateendmodule
//`ifdef ALT_MEM_PHY_DEFINES`else`include "alt_mem_phy_defines.v"`endif//module altmemddr_phy_alt_mem_phy_addr_cmd_ciii ( ac_clk_1x, ac_clk_2x, cs_n_clk_1x, cs_n_clk_2x, phy_clk_1x, reset_ac_clk_1x_n, reset_ac_clk_2x_n, reset_cs_n_clk_1x_n, reset_cs_n_clk_2x_n, ctl_add_1t_ac_lat, ctl_add_1t_odt_lat, ctl_negedge_en, ctl_add_intermediate_regs, ctl_mem_addr_h, ctl_mem_addr_l, ctl_mem_ba_h, ctl_mem_ba_l, ctl_mem_cas_n_h, ctl_mem_cas_n_l, ctl_mem_cke_h, ctl_mem_cke_l, ctl_mem_cs_n_h, ctl_mem_cs_n_l, ctl_mem_odt_h, ctl_mem_odt_l, ctl_mem_ras_n_h, ctl_mem_ras_n_l, ctl_mem_we_n_h, ctl_mem_we_n_l, mem_addr, mem_ba, mem_cas_n, mem_cke, mem_cs_n, mem_odt, mem_ras_n, mem_we_n );parameter DWIDTH_RATIO = 4;parameter MEM_ADDR_CMD_BUS_COUNT = 1;parameter MEM_IF_BANKADDR_WIDTH = 3;parameter MEM_IF_CS_WIDTH = 2;parameter MEM_IF_MEMTYPE = "DDR";parameter MEM_IF_ROWADDR_WIDTH = 13;input wire cs_n_clk_1x;input wire cs_n_clk_2x;input wire ac_clk_1x;input wire ac_clk_2x;input wire phy_clk_1x;input wire reset_ac_clk_1x_n;input wire reset_ac_clk_2x_n;input wire reset_cs_n_clk_1x_n;input wire reset_cs_n_clk_2x_n;input wire [MEM_IF_ROWADDR_WIDTH -1:0] ctl_mem_addr_h;input wire [MEM_IF_ROWADDR_WIDTH -1:0] ctl_mem_addr_l;input wire ctl_add_1t_ac_lat;input wire ctl_add_1t_odt_lat; input wire ctl_negedge_en;input wire ctl_add_intermediate_regs; input wire [MEM_IF_BANKADDR_WIDTH - 1:0] ctl_mem_ba_h;input wire [MEM_IF_BANKADDR_WIDTH - 1:0] ctl_mem_ba_l;input wire ctl_mem_cas_n_h;input wire ctl_mem_cas_n_l;input wire [MEM_IF_CS_WIDTH - 1:0] ctl_mem_cke_h;input wire [MEM_IF_CS_WIDTH - 1:0] ctl_mem_cke_l;input wire [MEM_IF_CS_WIDTH - 1:0] ctl_mem_cs_n_h;input wire [MEM_IF_CS_WIDTH - 1:0] ctl_mem_cs_n_l;input wire [MEM_IF_CS_WIDTH - 1:0] ctl_mem_odt_h;input wire [MEM_IF_CS_WIDTH - 1:0] ctl_mem_odt_l;input wire ctl_mem_ras_n_h;input wire ctl_mem_ras_n_l;input wire ctl_mem_we_n_h;input wire ctl_mem_we_n_l;output wire [MEM_IF_ROWADDR_WIDTH - 1 : 0] mem_addr;output wire [MEM_IF_BANKADDR_WIDTH - 1 : 0] mem_ba;output wire mem_cas_n;output wire [MEM_IF_CS_WIDTH - 1 : 0] mem_cke;output wire [MEM_IF_CS_WIDTH - 1 : 0] mem_cs_n;output wire [MEM_IF_CS_WIDTH - 1 : 0] mem_odt;output wire mem_ras_n;output wire mem_we_n;// Periodical select registers - per group of pinsreg [`ADC_NUM_PIN_GROUPS-1:0] count_addr = `ADC_NUM_PIN_GROUPS'b0;reg [`ADC_NUM_PIN_GROUPS-1:0] count_addr_2x = `ADC_NUM_PIN_GROUPS'b0;reg [`ADC_NUM_PIN_GROUPS-1:0] count_addr_2x_r = `ADC_NUM_PIN_GROUPS'b0;reg [`ADC_NUM_PIN_GROUPS-1:0] period_sel_addr = `ADC_NUM_PIN_GROUPS'b0;generategenvar ia;for (ia=0; ia<`ADC_NUM_PIN_GROUPS - 1; ia=ia+1)begin : SELECTS always @(posedge phy_clk_1x) begin count_addr[ia] <= ~count_addr[ia]; end always @(posedge ac_clk_2x) begin count_addr_2x[ia] <= count_addr[ia]; count_addr_2x_r[ia] <= count_addr_2x[ia]; period_sel_addr[ia] <= ~(count_addr_2x_r[ia] ^ count_addr_2x[ia]); endendendgenerate//now generate cs_n period sel, off the dedicated cs_n clock :always @(posedge phy_clk_1x)begin count_addr[`ADC_CS_N_PERIOD_SEL] <= ~count_addr[`ADC_CS_N_PERIOD_SEL];endalways @(posedge cs_n_clk_2x)begin count_addr_2x [`ADC_CS_N_PERIOD_SEL] <= count_addr [`ADC_CS_N_PERIOD_SEL]; count_addr_2x_r[`ADC_CS_N_PERIOD_SEL] <= count_addr_2x[`ADC_CS_N_PERIOD_SEL]; period_sel_addr[`ADC_CS_N_PERIOD_SEL] <= ~(count_addr_2x_r[`ADC_CS_N_PERIOD_SEL] ^ count_addr_2x[`ADC_CS_N_PERIOD_SEL]);end// Create the ADDR I/O structure : generategenvar ib; for (ib=0; ib<MEM_IF_ROWADDR_WIDTH; ib=ib+1) begin : addr // altmemddr_phy_alt_mem_phy_ac_ciii # ( .POWER_UP_HIGH (1), .DWIDTH_RATIO (DWIDTH_RATIO) ) addr_struct ( .clk_2x (ac_clk_2x), .reset_2x_n (1'b1), .phy_clk_1x (phy_clk_1x), .ctl_add_1t_ac_lat (ctl_add_1t_ac_lat), .ctl_negedge_en (ctl_negedge_en), .ctl_add_intermediate_regs (ctl_add_intermediate_regs), .period_sel (period_sel_addr[`ADC_ADDR_PERIOD_SEL]), .ac_h (ctl_mem_addr_h[ib]), .ac_l (ctl_mem_addr_l[ib]), .mem_ac (mem_addr[ib]) ); endendgenerate// Create the BANK_ADDR I/O structure :generategenvar ic; for (ic=0; ic<MEM_IF_BANKADDR_WIDTH; ic=ic+1) begin : ba // altmemddr_phy_alt_mem_phy_ac_ciii #( .POWER_UP_HIGH (0), .DWIDTH_RATIO (DWIDTH_RATIO) ) ba_struct ( .clk_2x (ac_clk_2x), .reset_2x_n (1'b1), .phy_clk_1x
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -