⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 altmemddr_phy_alt_mem_phy_ciii.v

📁 nios里面用自定义指令集来实现三角函数
💻 V
📖 第 1 页 / 共 5 页
字号:
                .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 + -