S
Senthilkumar
Guest
Хай,
Я хочу, чтобы дизайн интерфейса контроллера микросхемы HYB25L128160AC.
которые имеют отдельный контактный адрес и данные PIN-кода.
Я видела одного дизайна в Xilinx ZBT SRAM Verilog code.which имеют multiflexed адрес и данные строки.
Как же я могу назначить булавки в данной конструкции.Например А.Д. (0 )----------->??
как на этом можно назначить двух контактный разъем для чипов SDRAM.
мой код выглядит следующим образом
/************************************************* *****************************
*
* Имя файла: sdrm.v
* Версия: 1.14
* Дата: 9 сентября 1999
* Описание: Top уровне модуля
* Зависимые: sdrm_t, sys_int
*
* Компания: Xilinx
*
*
* Ответственность: Эти проекты УСЛОВИЯХ "КАК ЕСТЬ" БЕЗ ГАРАНТИИ
* БЫ ТО НИ БЫЛО И XILINX ОСОБО ОТКАЗЫВАЕТСЯ ОТ ЛЮБЫХ
* ПОДРАЗУМЕВАЕМЫХ ГАРАНТИЙ ПРИГОДНОСТИ ДЛЯ ТОРГОВЛИ,
* ОПРЕДЕЛЕННОЙ ЦЕЛИ, ИЛИ ПРОТИВ НАРУШЕНИЙ.
*
* Copyright (C) 1998 Xilinx, Inc
* Все права защищены
*
************************************************** ****************************/
`включают" define.v "
`сроки 1ns / 100ps
Модуль МРСЗ (/ * AUTOARG * /
/ / Мероприятия
sd_add, sd_ras, sd_cas, sd_we, sd_ba, Clk_SDp, sd_cke, sd_cs1,
sd_cs2, sd_dqm,
/ / Inouts
sd_data А. Д.,
/ / Входы
Сброс Clkp, Clk_FBp, we_rn, data_addr_n
);
Братья Карамазовы [( `DATA_MSB): 0] sd_data, AD;
Мощность [10:0] sd_add;
выходной sd_ras, sd_cas, sd_we, sd_ba, Clk_SDp;
выходной sd_cke, sd_cs1, sd_cs2;
Мощность [3:0] sd_dqm;
ввод Reset, Clkp, Clk_FBp, we_rn, data_addr_n;
проволоки [( `DATA_MSB): 0] sd_data;
проволоки [10:0] sd_add_op;
проволоки [( `DATA_MSB): 0] sd_data_i А. Д. AD_i;
проволоки [( `DATA_MSB): 0] sd_data_reg;
Проволока sd_cke_o, sd_cs1_o, sd_cs2_o, sd_ba_op, ready_o;
проволока [3:0] sd_dqm_o;
Проволока Reset, Reset_i;
REG [31:0] sd_data_o;
REG [( `DATA_MSB): 0] sd_data_t, sd_data_R, AD_o;
REG [10:0] sd_add_o;
р sd_ba_o, sd_cas_o, sd_ras_o, sd_we_o;
REG [3:0] sd_doe_n;
проволока [3:0] sd_doe_np;
Проволока Clkp, Clk_FBp, Clk_SDp;
Проволока Clk_FB, Clk_i, Clk_j, Clk0A, Clk0B, Clk0C;
Проволока Locked2, Locked1, Locked_i, Locked_j, logic1, logic0, CLK;
Проволока sd_ras_op, sd_cas_op, sd_we_op, write_st;
Проволока AD_tri;
проволоки [( `ADDR_MSB): 0] Add_reg;
REG [( `ADDR_MSB): 0] AD_reg;
проволока [1:0] rcd_c_max, cas_lat_max;
проволока [2:0] burst_max, Act_st;
проволока [3:0] ki_max;
проволоки [15:0] ref_max;
р data_addr_n_reg, we_rn_reg;
Проволока data_addr_n, data_addr_n_i, we_rn, we_rn_i;
Проволока ребенком, auto_ref_in, auto_ref_out;/************************************************* ******** \
* Экземпляра югу модули.*
* Sdrm_t = верхний уровень SDRAM контроллера *
* Sys_int = Системный интерфейс модуля *
* *
\ ************************************************* ********/
sdrm_t sdrm_t (. Locked1 (Locked1),. Locked2 (Locked2),. Clk_i (Clk_i),
. sd_ras_o (sd_ras_op),. sd_cas_o (sd_cas_op),. sd_we_o (sd_we_op),
. sd_add_o (sd_add_op),. sd_ba_o (sd_ba_op),. sd_doe_n (sd_doe_np),
. ready_o (ready_o),. Locked_i (Locked_i),. Locked_j (Locked_j),
. Add_reg (Add_reg [21:2]),. Rcd_c_max (rcd_c_max),. Ребенка (детей),
. auto_ref_in (auto_ref_in),. auto_ref_out (auto_ref_out),
. cas_lat_max (cas_lat_max),. burst_max (burst_max),
. Act_st (Act_st),. Clk_j (Clk_j),. Write_st (write_st),
. ki_max (ki_max),. ref_max (ref_max),. rcd_end (rcd_end),. AD_tri (AD_tri));
sys_int sys_int (. Locked (Locked_i),. Clk_i (Clk_i),. data_addr_n_reg (data_addr_n_reg),
. data_addr_n_i (data_addr_n_i),. we_rn_i (we_rn_i),
. we_rn_reg (we_rn_reg),. AD_reg (AD_reg),
. Act_st (Act_st),. Write_st (write_st),
. Add_reg (Add_reg),. Sd_data_reg (sd_data_reg),. Rcd_c_max (rcd_c_max),
. cas_lat_max (cas_lat_max),. burst_max (burst_max),
. ki_max (ki_max),. ref_max (ref_max));/************************************************* **************** \
* Delay автоподстройки и Глобального буферы тактовых циклов экземпляра *
* *
\ ************************************************* ***************/
Проволока unused1, unused2, unused3;
/ / входного тактового сигнала для FPGA (Clkp), должны пройти через IBUFG перед входом DLL
IBUFG ibufg0 (. I (Clkp),. O (CLK));
/ / часы отзывах SDRAM для часов зеркало (Clk_FBp),
/ / Должна пройти через IBUFG
IBUFG ibufg1 (. I (Clk_FBp),. O (Clk_FB));
/ / dll0 это часы зеркало, обеспечить SDRAM Clock (Clk_SDp)
CLKDLL dll0 (. CLKIN (CLK),. CLKFB (Clk_FB),. RST (Reset_i),. CLK0 (unused1),
. CLK90 (),. CLK180 (),. CLK270 (),. CLK2X (Clk0A),. CLKDV (unused2),
. Заблокированы (Locked1));
/ / Clk_SDp направляется непосредственно из dll0 в выходной буфер
OBUF_F_16 obuf0 (. I (Clk0A),. O (Clk_SDp));
/ / ddl1 обеспечивает внутренние часы на ПЛИС
/ / эти часы диска глобальный буфер часы (BUFG), чтобы получить минимальную косой
CLKDLL dll1 (. CLKIN (CLK),. CLKFB (Clk_i),. RST (Reset_i),. CLK0 (Clk0C),
. CLK90 (),. CLK180 (),. CLK270 (),. CLK2X (Clk0B),. CLKDV (unused3),
. Заблокированы (Locked2));
/ / Clk_j такое же, как ввод часы (Clk_SDp)
/ / Clk_i это умножается на 2x
BUFG bufg0 (. O (Clk_i),. I (Clk0B));
BUFG bufg1 (. O (Clk_j),. I (Clk0C));
/************************************************* **************** \
* IO колодки триггеров и Tri-State Logic *
* *
\ ************************************************* ***************/
назначить logic0 = 1'b0;
назначить logic1 = 1'b1;
назначить sd_cke_o = logic1;
назначить sd_cs1_o = logic0;
назначить sd_cs2_o = logic0;
назначить sd_dqm_o [3:0] = ((4)) logic0;
назначить auto_ref_in = auto_ref_out;Всегда @ (posedge Clk_i или negedge Locked_i)
если (~ Locked_i)
начинать
sd_data_o <= 32'hffffffff;
sd_data_t [31:0] <= 32'hffffffff;
sd_data_R <= 32'h00000000;
AD_o <= 32'h00000000;
AD_reg <= 32'h00000000;
data_addr_n_reg <= 1;
we_rn_reg <= 0;
конец
ELSE BEGIN
sd_data_o <= # 3 sd_data_reg;
/ / Tristate Сигнал дублируется на 4 сигналов, каждый из которых 8 нагрузок
/ / Это позволяет сократить задержки sd_data_t
sd_data_t [31:24] <= # 3 (8 (sd_doe_n [3]));
sd_data_t [23:16] <= # 3 (8 (sd_doe_n [2]));
sd_data_t [15:8] <= # 3 (8 (sd_doe_n [1]));
sd_data_t [7:0] <= # 3 (8 (sd_doe_n [0]));
sd_data_R <= sd_data_i;
AD_o <= sd_data_R;
AD_reg <= AD_i;
data_addr_n_reg <= data_addr_n_i;
we_rn_reg <= we_rn_i;
конец
Всегда @ (posedge Clk_i или negedge Locked_i)
если (~ Locked_i)
начинать
sd_add_o [10:0] <= 11'h000;
sd_ba_o <= 1'b0;
sd_ras_o <= 1'b1;
sd_cas_o <= 1'b1;
sd_we_o <= 1'b1;
sd_doe_n <= 4'hf;
конец
ELSE BEGIN
sd_add_o [10:0] <= # 3 sd_add_op [10:0];
sd_ba_o <= # 3 sd_ba_op;
sd_ras_o <= # 3 sd_ras_op;
sd_cas_o <= # 3 sd_cas_op;
sd_we_o <= # 3 sd_we_op;
sd_doe_n <= # 3 sd_doe_np;
конец/************************************************* **************** \
* IO колодки экземпляра *
* *
\ ************************************************* ***************/IOBUF_F_12 iod0 (. I (sd_data_o [0]),. IO (sd_data [0]),. O (sd_data_i [0]),. Т (sd_data_t [0]));
IOBUF_F_12 iod1 (. I (sd_data_o [1]),. IO (sd_data [1]),. O (sd_data_i [1]),. Т (sd_data_t [1]));
IOBUF_F_12 iod2 (. I (sd_data_o [2]),. IO (sd_data [2]),. O (sd_data_i [2]),. Т (sd_data_t [2]));
IOBUF_F_12 iod3 (. I (sd_data_o [3]),. IO (sd_data [3]),. O (sd_data_i [3]),. Т (sd_data_t [3]));
IOBUF_F_12 iod4 (. I (sd_data_o [4]),. IO (sd_data [4]),. O (sd_data_i [4]),. Т (sd_data_t [4]));
IOBUF_F_12 iod5 (. I (sd_data_o [5]),. IO (sd_data [5]),. O (sd_data_i [5]),. Т (sd_data_t [5]));
IOBUF_F_12 iod6 (. I (sd_data_o [6]),. IO (sd_data [6]),. O (sd_data_i [6]),. Т (sd_data_t [6]));
IOBUF_F_12 iod7 (. I (sd_data_o [7]),. IO (sd_data [7]),. O (sd_data_i [7]),. Т (sd_data_t [7]));
IOBUF_F_12 iod8 (. I (sd_data_o [8]),. IO (sd_data [8]),. O (sd_data_i [8]),. Т (sd_data_t [8]));
IOBUF_F_12 iod9 (. I (sd_data_o [9]),. IO (sd_data [9]),. O (sd_data_i [9]),. Т (sd_data_t [9]));
IOBUF_F_12 iod10 (. I (sd_data_o [10]),. IO (sd_data [10]),. O (sd_data_i [10]),. Т (sd_data_t [10]));
IOBUF_F_12 iod11 (. I (sd_data_o [11]),. IO (sd_data [11]),. O (sd_data_i [11]),. Т (sd_data_t [11]));
IOBUF_F_12 iod12 (. I (sd_data_o [12]),. IO (sd_data [12]),. O (sd_data_i [12]),. Т (sd_data_t [12]));
IOBUF_F_12 iod13 (. I (sd_data_o [13]),. IO (sd_data [13]),. O (sd_data_i [13]),. Т (sd_data_t [13]));
IOBUF_F_12 iod14 (. I (sd_data_o [14]),. IO (sd_data [14]),. O (sd_data_i [14]),. Т (sd_data_t [14]));
IOBUF_F_12 iod15 (. I (sd_data_o [15]),. IO (sd_data [15]),. O (sd_data_i [15]),. Т (sd_data_t [15]));
IOBUF_F_12 iod16 (. I (sd_data_o [16]),. IO (sd_data [16]),. O (sd_data_i [16]),. Т (sd_data_t [16]));
IOBUF_F_12 iod17 (. I (sd_data_o [17]),. IO (sd_data [17]),. O (sd_data_i [17]),. Т (sd_data_t [17]));
IOBUF_F_12 iod18 (. I (sd_data_o [18]),. IO (sd_data [18]),. O (sd_data_i [18]),. Т (sd_data_t [18]));
IOBUF_F_12 iod19 (. I (sd_data_o [19]),. IO (sd_data [19]),. O (sd_data_i [19]),. Т (sd_data_t [19]));
IOBUF_F_12 iod20 (. I (sd_data_o [20]),. IO (sd_data [20]),. O (sd_data_i [20]),. Т (sd_data_t [20]));
IOBUF_F_12 iod21 (. I (sd_data_o [21]),. IO (sd_data [21]),. O (sd_data_i [21]),. Т (sd_data_t [21]));
IOBUF_F_12 iod22 (. I (sd_data_o [22]),. IO (sd_data [22]),. O (sd_data_i [22]),. Т (sd_data_t [22]));
IOBUF_F_12 iod23 (. I (sd_data_o [23]),. IO (sd_data [23]),. O (sd_data_i [23]),. Т (sd_data_t [23]));
IOBUF_F_12 iod24 (. I (sd_data_o [24]),. IO (sd_data [24]),. O (sd_data_i [24]),. Т (sd_data_t [24]));
IOBUF_F_12 iod25 (. I (sd_data_o [25]),. IO (sd_data [25]),. O (sd_data_i [25]),. Т (sd_data_t [25]));
IOBUF_F_12 iod26 (. I (sd_data_o [26]),. IO (sd_data [26]),. O (sd_data_i [26]),. Т (sd_data_t [26]));
IOBUF_F_12 iod27 (. I (sd_data_o [27]),. IO (sd_data [27]),. O (sd_data_i [27]),. Т (sd_data_t [27]));
IOBUF_F_12 iod28 (. I (sd_data_o [28]),. IO (sd_data [28]),. O (sd_data_i [28]),. Т (sd_data_t [28]));
IOBUF_F_12 iod29 (. I (sd_data_o [29]),. IO (sd_data [29]),. O (sd_data_i [29]),. Т (sd_data_t [29]));
IOBUF_F_12 iod30 (. I (sd_data_o [30]),. IO (sd_data [30]),. O (sd_data_i [30]),. Т (sd_data_t [30]));
IOBUF_F_12 iod31 (. I (sd_data_o [31]). IO (sd_data [31]). O (sd_data_i [31]). Т (sd_data_t [31]));OBUF_F_12 sda0 (. O (sd_add [0]),. I (sd_add_o [0]));
OBUF_F_12 sda1 (. O (sd_add [1]),. I (sd_add_o [1]));
OBUF_F_12 sda2 (. O (sd_add [2]),. I (sd_add_o [2]));
OBUF_F_12 sda3 (. O (sd_add [3]),. I (sd_add_o [3]));
OBUF_F_12 sda4 (. O (sd_add [4]),. I (sd_add_o [4]));
OBUF_F_12 sda5 (. O (sd_add [5]),. I (sd_add_o [5]));
OBUF_F_12 sda6 (. O (sd_add [6]),. I (sd_add_o [6]));
OBUF_F_12 sda7 (. O (sd_add [7]),. I (sd_add_o [7]));
OBUF_F_12 sda8 (. O (sd_add [8]),. I (sd_add_o [8]));
OBUF_F_12 sda9 (. O (sd_add [9]),. I (sd_add_o [9]));
OBUF_F_12 sda10 (. O (sd_add [10]),. I (sd_add_o [10]));OBUF_F_12 SDB (. O (sd_ba),. I (sd_ba_o));
OBUF_F_12 СДР (. O (sd_ras),. I (sd_ras_o));
OBUF_F_12 SDC (. O (sd_cas),. I (sd_cas_o));
OBUF_F_12 ТБО (. O (sd_we),. I (sd_we_o));
OBUF_F_12 sdcke (. O (sd_cke),. I (sd_cke_o));
OBUF_F_12 sdcs1 (. O (sd_cs1),. I (sd_cs1_o));
OBUF_F_12 sdcs2 (. O (sd_cs2),. I (sd_cs2_o));
OBUF_F_12 dqm0 (. O (sd_dqm [0]),. I (sd_dqm_o [0]));
OBUF_F_12 dqm1 (. O (sd_dqm [1]),. I (sd_dqm_o [1]));
OBUF_F_12 dqm2 (. O (sd_dqm [2]),. I (sd_dqm_o [2]));
OBUF_F_12 dqm3 (. O (sd_dqm [3]),. I (sd_dqm_o [3]));/************************************************* **************** \
* Процессор интерфейса ввода-вывода колодки *
* *
\ ************************************************* ***************/
IBUF rst_b (. O (Reset_i),. I (Reset));
IBUF ads_b (. O (data_addr_n_i),. I (data_addr_n));
IBUF wern_b (. O (we_rn_i),. I (we_rn));IOBUF_F_12 ad0 (. I (AD_o [0]),. O (AD_i [0]),. IO (AD [0]),. Т (AD_tri));
IOBUF_F_12 Ad1 (. I (AD_o [1]),. O (AD_i [1]),. IO (AD [1]),. Т (AD_tri));
IOBUF_F_12 Ad2 (. I (AD_o [2]),. O (AD_i [2]),. IO (AD [2]),. Т (AD_tri));
IOBUF_F_12 ad3 (. I (AD_o [3]),. O (AD_i [3]),. IO (AD [3]),. Т (AD_tri));
IOBUF_F_12 ad4 (. I (AD_o [4]),. O (AD_i [4]),. IO (AD [4]),. Т (AD_tri));
IOBUF_F_12 Ad5 (. I (AD_o [5]),. O (AD_i [5]),. IO (AD [5]),. Т (AD_tri));
IOBUF_F_12 ad6 (. I (AD_o [6]),. O (AD_i [6]),. IO (AD [6]),. Т (AD_tri));
IOBUF_F_12 ad7 (. I (AD_o [7]),. O (AD_i [7]),. IO (AD [7]),. Т (AD_tri));
IOBUF_F_12 ad8 (. I (AD_o [8]),. O (AD_i [8]),. IO (AD [8]),. Т (AD_tri));
IOBUF_F_12 AD9 (. I (AD_o [9]),. O (AD_i [9]),. IO (AD [9]),. Т (AD_tri));
IOBUF_F_12 ad10 (. I (AD_o [10]),. O (AD_i [10]),. IO (AD [10]),. Т (AD_tri));
IOBUF_F_12 ad11 (. I (AD_o [11]),. O (AD_i [11]),. IO (AD [11]),. Т (AD_tri));
IOBUF_F_12 Ad12 (. I (AD_o [12]),. O (AD_i [12]),. IO (AD [12]),. Т (AD_tri));
IOBUF_F_12 ad13 (. I (AD_o [13]),. O (AD_i [13]),. IO (AD [13]),. Т (AD_tri));
IOBUF_F_12 ad14 (. I (AD_o [14]),. O (AD_i [14]),. IO (AD [14]),. Т (AD_tri));
IOBUF_F_12 ad15 (. I (AD_o [15]),. O (AD_i [15]),. IO (AD [15]),. Т (AD_tri));
IOBUF_F_12 ad16 (. I (AD_o [16]),. O (AD_i [16]),. IO (AD [16]),. Т (AD_tri));
IOBUF_F_12 ad17 (. I (AD_o [17]),. O (AD_i [17]),. IO (AD [17]),. Т (AD_tri));
IOBUF_F_12 ad18 (. I (AD_o [18]),. O (AD_i [18]),. IO (AD [18]),. Т (AD_tri));
IOBUF_F_12 ad19 (. I (AD_o [19]),. O (AD_i [19]),. IO (AD [19]),. Т (AD_tri));
IOBUF_F_12 AD20 (. I (AD_o [20]),. O (AD_i [20]),. IO (AD [20]),. Т (AD_tri));
IOBUF_F_12 ad21 (. I (AD_o [21]),. O (AD_i [21]),. IO (AD [21]),. Т (AD_tri));
IOBUF_F_12 ad22 (. I (AD_o [22]),. O (AD_i [22]),. IO (AD [22]),. Т (AD_tri));
IOBUF_F_12 ad23 (. I (AD_o [23]),. O (AD_i [23]),. IO (AD [23]),. Т (AD_tri));
IOBUF_F_12 ad24 (. I (AD_o [24]),. O (AD_i [24]),. IO (AD [24]),. Т (AD_tri));
IOBUF_F_12 AD25 (. I (AD_o [25]),. O (AD_i [25]),. IO (AD [25]),. Т (AD_tri));
IOBUF_F_12 ad26 (. I (AD_o [26]),. O (AD_i [26]),. IO (AD [26]),. Т (AD_tri));
IOBUF_F_12 ad27 (. I (AD_o [27]),. O (AD_i [27]),. IO (AD [27]),. Т (AD_tri));
IOBUF_F_12 ad28 (. I (AD_o [28]),. O (AD_i [28]),. IO (AD [28]),. Т (AD_tri));
IOBUF_F_12 ad29 (. I (AD_o [29]),. O (AD_i [29]),. IO (AD [29]),. Т (AD_tri));
IOBUF_F_12 ad30 (. I (AD_o [30]),. O (AD_i [30]),. IO (AD [30]),. Т (AD_tri));
IOBUF_F_12 АД31 (. I (AD_o [31]). O (AD_i [31]). IO (AD [31]). Т (AD_tri));
ENDMODULE
IAM учащегося.
кто-нибудь помогать мне.
Спасибо заранее.
Я хочу, чтобы дизайн интерфейса контроллера микросхемы HYB25L128160AC.
которые имеют отдельный контактный адрес и данные PIN-кода.
Я видела одного дизайна в Xilinx ZBT SRAM Verilog code.which имеют multiflexed адрес и данные строки.
Как же я могу назначить булавки в данной конструкции.Например А.Д. (0 )----------->??
как на этом можно назначить двух контактный разъем для чипов SDRAM.
мой код выглядит следующим образом
/************************************************* *****************************
*
* Имя файла: sdrm.v
* Версия: 1.14
* Дата: 9 сентября 1999
* Описание: Top уровне модуля
* Зависимые: sdrm_t, sys_int
*
* Компания: Xilinx
*
*
* Ответственность: Эти проекты УСЛОВИЯХ "КАК ЕСТЬ" БЕЗ ГАРАНТИИ
* БЫ ТО НИ БЫЛО И XILINX ОСОБО ОТКАЗЫВАЕТСЯ ОТ ЛЮБЫХ
* ПОДРАЗУМЕВАЕМЫХ ГАРАНТИЙ ПРИГОДНОСТИ ДЛЯ ТОРГОВЛИ,
* ОПРЕДЕЛЕННОЙ ЦЕЛИ, ИЛИ ПРОТИВ НАРУШЕНИЙ.
*
* Copyright (C) 1998 Xilinx, Inc
* Все права защищены
*
************************************************** ****************************/
`включают" define.v "
`сроки 1ns / 100ps
Модуль МРСЗ (/ * AUTOARG * /
/ / Мероприятия
sd_add, sd_ras, sd_cas, sd_we, sd_ba, Clk_SDp, sd_cke, sd_cs1,
sd_cs2, sd_dqm,
/ / Inouts
sd_data А. Д.,
/ / Входы
Сброс Clkp, Clk_FBp, we_rn, data_addr_n
);
Братья Карамазовы [( `DATA_MSB): 0] sd_data, AD;
Мощность [10:0] sd_add;
выходной sd_ras, sd_cas, sd_we, sd_ba, Clk_SDp;
выходной sd_cke, sd_cs1, sd_cs2;
Мощность [3:0] sd_dqm;
ввод Reset, Clkp, Clk_FBp, we_rn, data_addr_n;
проволоки [( `DATA_MSB): 0] sd_data;
проволоки [10:0] sd_add_op;
проволоки [( `DATA_MSB): 0] sd_data_i А. Д. AD_i;
проволоки [( `DATA_MSB): 0] sd_data_reg;
Проволока sd_cke_o, sd_cs1_o, sd_cs2_o, sd_ba_op, ready_o;
проволока [3:0] sd_dqm_o;
Проволока Reset, Reset_i;
REG [31:0] sd_data_o;
REG [( `DATA_MSB): 0] sd_data_t, sd_data_R, AD_o;
REG [10:0] sd_add_o;
р sd_ba_o, sd_cas_o, sd_ras_o, sd_we_o;
REG [3:0] sd_doe_n;
проволока [3:0] sd_doe_np;
Проволока Clkp, Clk_FBp, Clk_SDp;
Проволока Clk_FB, Clk_i, Clk_j, Clk0A, Clk0B, Clk0C;
Проволока Locked2, Locked1, Locked_i, Locked_j, logic1, logic0, CLK;
Проволока sd_ras_op, sd_cas_op, sd_we_op, write_st;
Проволока AD_tri;
проволоки [( `ADDR_MSB): 0] Add_reg;
REG [( `ADDR_MSB): 0] AD_reg;
проволока [1:0] rcd_c_max, cas_lat_max;
проволока [2:0] burst_max, Act_st;
проволока [3:0] ki_max;
проволоки [15:0] ref_max;
р data_addr_n_reg, we_rn_reg;
Проволока data_addr_n, data_addr_n_i, we_rn, we_rn_i;
Проволока ребенком, auto_ref_in, auto_ref_out;/************************************************* ******** \
* Экземпляра югу модули.*
* Sdrm_t = верхний уровень SDRAM контроллера *
* Sys_int = Системный интерфейс модуля *
* *
\ ************************************************* ********/
sdrm_t sdrm_t (. Locked1 (Locked1),. Locked2 (Locked2),. Clk_i (Clk_i),
. sd_ras_o (sd_ras_op),. sd_cas_o (sd_cas_op),. sd_we_o (sd_we_op),
. sd_add_o (sd_add_op),. sd_ba_o (sd_ba_op),. sd_doe_n (sd_doe_np),
. ready_o (ready_o),. Locked_i (Locked_i),. Locked_j (Locked_j),
. Add_reg (Add_reg [21:2]),. Rcd_c_max (rcd_c_max),. Ребенка (детей),
. auto_ref_in (auto_ref_in),. auto_ref_out (auto_ref_out),
. cas_lat_max (cas_lat_max),. burst_max (burst_max),
. Act_st (Act_st),. Clk_j (Clk_j),. Write_st (write_st),
. ki_max (ki_max),. ref_max (ref_max),. rcd_end (rcd_end),. AD_tri (AD_tri));
sys_int sys_int (. Locked (Locked_i),. Clk_i (Clk_i),. data_addr_n_reg (data_addr_n_reg),
. data_addr_n_i (data_addr_n_i),. we_rn_i (we_rn_i),
. we_rn_reg (we_rn_reg),. AD_reg (AD_reg),
. Act_st (Act_st),. Write_st (write_st),
. Add_reg (Add_reg),. Sd_data_reg (sd_data_reg),. Rcd_c_max (rcd_c_max),
. cas_lat_max (cas_lat_max),. burst_max (burst_max),
. ki_max (ki_max),. ref_max (ref_max));/************************************************* **************** \
* Delay автоподстройки и Глобального буферы тактовых циклов экземпляра *
* *
\ ************************************************* ***************/
Проволока unused1, unused2, unused3;
/ / входного тактового сигнала для FPGA (Clkp), должны пройти через IBUFG перед входом DLL
IBUFG ibufg0 (. I (Clkp),. O (CLK));
/ / часы отзывах SDRAM для часов зеркало (Clk_FBp),
/ / Должна пройти через IBUFG
IBUFG ibufg1 (. I (Clk_FBp),. O (Clk_FB));
/ / dll0 это часы зеркало, обеспечить SDRAM Clock (Clk_SDp)
CLKDLL dll0 (. CLKIN (CLK),. CLKFB (Clk_FB),. RST (Reset_i),. CLK0 (unused1),
. CLK90 (),. CLK180 (),. CLK270 (),. CLK2X (Clk0A),. CLKDV (unused2),
. Заблокированы (Locked1));
/ / Clk_SDp направляется непосредственно из dll0 в выходной буфер
OBUF_F_16 obuf0 (. I (Clk0A),. O (Clk_SDp));
/ / ddl1 обеспечивает внутренние часы на ПЛИС
/ / эти часы диска глобальный буфер часы (BUFG), чтобы получить минимальную косой
CLKDLL dll1 (. CLKIN (CLK),. CLKFB (Clk_i),. RST (Reset_i),. CLK0 (Clk0C),
. CLK90 (),. CLK180 (),. CLK270 (),. CLK2X (Clk0B),. CLKDV (unused3),
. Заблокированы (Locked2));
/ / Clk_j такое же, как ввод часы (Clk_SDp)
/ / Clk_i это умножается на 2x
BUFG bufg0 (. O (Clk_i),. I (Clk0B));
BUFG bufg1 (. O (Clk_j),. I (Clk0C));
/************************************************* **************** \
* IO колодки триггеров и Tri-State Logic *
* *
\ ************************************************* ***************/
назначить logic0 = 1'b0;
назначить logic1 = 1'b1;
назначить sd_cke_o = logic1;
назначить sd_cs1_o = logic0;
назначить sd_cs2_o = logic0;
назначить sd_dqm_o [3:0] = ((4)) logic0;
назначить auto_ref_in = auto_ref_out;Всегда @ (posedge Clk_i или negedge Locked_i)
если (~ Locked_i)
начинать
sd_data_o <= 32'hffffffff;
sd_data_t [31:0] <= 32'hffffffff;
sd_data_R <= 32'h00000000;
AD_o <= 32'h00000000;
AD_reg <= 32'h00000000;
data_addr_n_reg <= 1;
we_rn_reg <= 0;
конец
ELSE BEGIN
sd_data_o <= # 3 sd_data_reg;
/ / Tristate Сигнал дублируется на 4 сигналов, каждый из которых 8 нагрузок
/ / Это позволяет сократить задержки sd_data_t
sd_data_t [31:24] <= # 3 (8 (sd_doe_n [3]));
sd_data_t [23:16] <= # 3 (8 (sd_doe_n [2]));
sd_data_t [15:8] <= # 3 (8 (sd_doe_n [1]));
sd_data_t [7:0] <= # 3 (8 (sd_doe_n [0]));
sd_data_R <= sd_data_i;
AD_o <= sd_data_R;
AD_reg <= AD_i;
data_addr_n_reg <= data_addr_n_i;
we_rn_reg <= we_rn_i;
конец
Всегда @ (posedge Clk_i или negedge Locked_i)
если (~ Locked_i)
начинать
sd_add_o [10:0] <= 11'h000;
sd_ba_o <= 1'b0;
sd_ras_o <= 1'b1;
sd_cas_o <= 1'b1;
sd_we_o <= 1'b1;
sd_doe_n <= 4'hf;
конец
ELSE BEGIN
sd_add_o [10:0] <= # 3 sd_add_op [10:0];
sd_ba_o <= # 3 sd_ba_op;
sd_ras_o <= # 3 sd_ras_op;
sd_cas_o <= # 3 sd_cas_op;
sd_we_o <= # 3 sd_we_op;
sd_doe_n <= # 3 sd_doe_np;
конец/************************************************* **************** \
* IO колодки экземпляра *
* *
\ ************************************************* ***************/IOBUF_F_12 iod0 (. I (sd_data_o [0]),. IO (sd_data [0]),. O (sd_data_i [0]),. Т (sd_data_t [0]));
IOBUF_F_12 iod1 (. I (sd_data_o [1]),. IO (sd_data [1]),. O (sd_data_i [1]),. Т (sd_data_t [1]));
IOBUF_F_12 iod2 (. I (sd_data_o [2]),. IO (sd_data [2]),. O (sd_data_i [2]),. Т (sd_data_t [2]));
IOBUF_F_12 iod3 (. I (sd_data_o [3]),. IO (sd_data [3]),. O (sd_data_i [3]),. Т (sd_data_t [3]));
IOBUF_F_12 iod4 (. I (sd_data_o [4]),. IO (sd_data [4]),. O (sd_data_i [4]),. Т (sd_data_t [4]));
IOBUF_F_12 iod5 (. I (sd_data_o [5]),. IO (sd_data [5]),. O (sd_data_i [5]),. Т (sd_data_t [5]));
IOBUF_F_12 iod6 (. I (sd_data_o [6]),. IO (sd_data [6]),. O (sd_data_i [6]),. Т (sd_data_t [6]));
IOBUF_F_12 iod7 (. I (sd_data_o [7]),. IO (sd_data [7]),. O (sd_data_i [7]),. Т (sd_data_t [7]));
IOBUF_F_12 iod8 (. I (sd_data_o [8]),. IO (sd_data [8]),. O (sd_data_i [8]),. Т (sd_data_t [8]));
IOBUF_F_12 iod9 (. I (sd_data_o [9]),. IO (sd_data [9]),. O (sd_data_i [9]),. Т (sd_data_t [9]));
IOBUF_F_12 iod10 (. I (sd_data_o [10]),. IO (sd_data [10]),. O (sd_data_i [10]),. Т (sd_data_t [10]));
IOBUF_F_12 iod11 (. I (sd_data_o [11]),. IO (sd_data [11]),. O (sd_data_i [11]),. Т (sd_data_t [11]));
IOBUF_F_12 iod12 (. I (sd_data_o [12]),. IO (sd_data [12]),. O (sd_data_i [12]),. Т (sd_data_t [12]));
IOBUF_F_12 iod13 (. I (sd_data_o [13]),. IO (sd_data [13]),. O (sd_data_i [13]),. Т (sd_data_t [13]));
IOBUF_F_12 iod14 (. I (sd_data_o [14]),. IO (sd_data [14]),. O (sd_data_i [14]),. Т (sd_data_t [14]));
IOBUF_F_12 iod15 (. I (sd_data_o [15]),. IO (sd_data [15]),. O (sd_data_i [15]),. Т (sd_data_t [15]));
IOBUF_F_12 iod16 (. I (sd_data_o [16]),. IO (sd_data [16]),. O (sd_data_i [16]),. Т (sd_data_t [16]));
IOBUF_F_12 iod17 (. I (sd_data_o [17]),. IO (sd_data [17]),. O (sd_data_i [17]),. Т (sd_data_t [17]));
IOBUF_F_12 iod18 (. I (sd_data_o [18]),. IO (sd_data [18]),. O (sd_data_i [18]),. Т (sd_data_t [18]));
IOBUF_F_12 iod19 (. I (sd_data_o [19]),. IO (sd_data [19]),. O (sd_data_i [19]),. Т (sd_data_t [19]));
IOBUF_F_12 iod20 (. I (sd_data_o [20]),. IO (sd_data [20]),. O (sd_data_i [20]),. Т (sd_data_t [20]));
IOBUF_F_12 iod21 (. I (sd_data_o [21]),. IO (sd_data [21]),. O (sd_data_i [21]),. Т (sd_data_t [21]));
IOBUF_F_12 iod22 (. I (sd_data_o [22]),. IO (sd_data [22]),. O (sd_data_i [22]),. Т (sd_data_t [22]));
IOBUF_F_12 iod23 (. I (sd_data_o [23]),. IO (sd_data [23]),. O (sd_data_i [23]),. Т (sd_data_t [23]));
IOBUF_F_12 iod24 (. I (sd_data_o [24]),. IO (sd_data [24]),. O (sd_data_i [24]),. Т (sd_data_t [24]));
IOBUF_F_12 iod25 (. I (sd_data_o [25]),. IO (sd_data [25]),. O (sd_data_i [25]),. Т (sd_data_t [25]));
IOBUF_F_12 iod26 (. I (sd_data_o [26]),. IO (sd_data [26]),. O (sd_data_i [26]),. Т (sd_data_t [26]));
IOBUF_F_12 iod27 (. I (sd_data_o [27]),. IO (sd_data [27]),. O (sd_data_i [27]),. Т (sd_data_t [27]));
IOBUF_F_12 iod28 (. I (sd_data_o [28]),. IO (sd_data [28]),. O (sd_data_i [28]),. Т (sd_data_t [28]));
IOBUF_F_12 iod29 (. I (sd_data_o [29]),. IO (sd_data [29]),. O (sd_data_i [29]),. Т (sd_data_t [29]));
IOBUF_F_12 iod30 (. I (sd_data_o [30]),. IO (sd_data [30]),. O (sd_data_i [30]),. Т (sd_data_t [30]));
IOBUF_F_12 iod31 (. I (sd_data_o [31]). IO (sd_data [31]). O (sd_data_i [31]). Т (sd_data_t [31]));OBUF_F_12 sda0 (. O (sd_add [0]),. I (sd_add_o [0]));
OBUF_F_12 sda1 (. O (sd_add [1]),. I (sd_add_o [1]));
OBUF_F_12 sda2 (. O (sd_add [2]),. I (sd_add_o [2]));
OBUF_F_12 sda3 (. O (sd_add [3]),. I (sd_add_o [3]));
OBUF_F_12 sda4 (. O (sd_add [4]),. I (sd_add_o [4]));
OBUF_F_12 sda5 (. O (sd_add [5]),. I (sd_add_o [5]));
OBUF_F_12 sda6 (. O (sd_add [6]),. I (sd_add_o [6]));
OBUF_F_12 sda7 (. O (sd_add [7]),. I (sd_add_o [7]));
OBUF_F_12 sda8 (. O (sd_add [8]),. I (sd_add_o [8]));
OBUF_F_12 sda9 (. O (sd_add [9]),. I (sd_add_o [9]));
OBUF_F_12 sda10 (. O (sd_add [10]),. I (sd_add_o [10]));OBUF_F_12 SDB (. O (sd_ba),. I (sd_ba_o));
OBUF_F_12 СДР (. O (sd_ras),. I (sd_ras_o));
OBUF_F_12 SDC (. O (sd_cas),. I (sd_cas_o));
OBUF_F_12 ТБО (. O (sd_we),. I (sd_we_o));
OBUF_F_12 sdcke (. O (sd_cke),. I (sd_cke_o));
OBUF_F_12 sdcs1 (. O (sd_cs1),. I (sd_cs1_o));
OBUF_F_12 sdcs2 (. O (sd_cs2),. I (sd_cs2_o));
OBUF_F_12 dqm0 (. O (sd_dqm [0]),. I (sd_dqm_o [0]));
OBUF_F_12 dqm1 (. O (sd_dqm [1]),. I (sd_dqm_o [1]));
OBUF_F_12 dqm2 (. O (sd_dqm [2]),. I (sd_dqm_o [2]));
OBUF_F_12 dqm3 (. O (sd_dqm [3]),. I (sd_dqm_o [3]));/************************************************* **************** \
* Процессор интерфейса ввода-вывода колодки *
* *
\ ************************************************* ***************/
IBUF rst_b (. O (Reset_i),. I (Reset));
IBUF ads_b (. O (data_addr_n_i),. I (data_addr_n));
IBUF wern_b (. O (we_rn_i),. I (we_rn));IOBUF_F_12 ad0 (. I (AD_o [0]),. O (AD_i [0]),. IO (AD [0]),. Т (AD_tri));
IOBUF_F_12 Ad1 (. I (AD_o [1]),. O (AD_i [1]),. IO (AD [1]),. Т (AD_tri));
IOBUF_F_12 Ad2 (. I (AD_o [2]),. O (AD_i [2]),. IO (AD [2]),. Т (AD_tri));
IOBUF_F_12 ad3 (. I (AD_o [3]),. O (AD_i [3]),. IO (AD [3]),. Т (AD_tri));
IOBUF_F_12 ad4 (. I (AD_o [4]),. O (AD_i [4]),. IO (AD [4]),. Т (AD_tri));
IOBUF_F_12 Ad5 (. I (AD_o [5]),. O (AD_i [5]),. IO (AD [5]),. Т (AD_tri));
IOBUF_F_12 ad6 (. I (AD_o [6]),. O (AD_i [6]),. IO (AD [6]),. Т (AD_tri));
IOBUF_F_12 ad7 (. I (AD_o [7]),. O (AD_i [7]),. IO (AD [7]),. Т (AD_tri));
IOBUF_F_12 ad8 (. I (AD_o [8]),. O (AD_i [8]),. IO (AD [8]),. Т (AD_tri));
IOBUF_F_12 AD9 (. I (AD_o [9]),. O (AD_i [9]),. IO (AD [9]),. Т (AD_tri));
IOBUF_F_12 ad10 (. I (AD_o [10]),. O (AD_i [10]),. IO (AD [10]),. Т (AD_tri));
IOBUF_F_12 ad11 (. I (AD_o [11]),. O (AD_i [11]),. IO (AD [11]),. Т (AD_tri));
IOBUF_F_12 Ad12 (. I (AD_o [12]),. O (AD_i [12]),. IO (AD [12]),. Т (AD_tri));
IOBUF_F_12 ad13 (. I (AD_o [13]),. O (AD_i [13]),. IO (AD [13]),. Т (AD_tri));
IOBUF_F_12 ad14 (. I (AD_o [14]),. O (AD_i [14]),. IO (AD [14]),. Т (AD_tri));
IOBUF_F_12 ad15 (. I (AD_o [15]),. O (AD_i [15]),. IO (AD [15]),. Т (AD_tri));
IOBUF_F_12 ad16 (. I (AD_o [16]),. O (AD_i [16]),. IO (AD [16]),. Т (AD_tri));
IOBUF_F_12 ad17 (. I (AD_o [17]),. O (AD_i [17]),. IO (AD [17]),. Т (AD_tri));
IOBUF_F_12 ad18 (. I (AD_o [18]),. O (AD_i [18]),. IO (AD [18]),. Т (AD_tri));
IOBUF_F_12 ad19 (. I (AD_o [19]),. O (AD_i [19]),. IO (AD [19]),. Т (AD_tri));
IOBUF_F_12 AD20 (. I (AD_o [20]),. O (AD_i [20]),. IO (AD [20]),. Т (AD_tri));
IOBUF_F_12 ad21 (. I (AD_o [21]),. O (AD_i [21]),. IO (AD [21]),. Т (AD_tri));
IOBUF_F_12 ad22 (. I (AD_o [22]),. O (AD_i [22]),. IO (AD [22]),. Т (AD_tri));
IOBUF_F_12 ad23 (. I (AD_o [23]),. O (AD_i [23]),. IO (AD [23]),. Т (AD_tri));
IOBUF_F_12 ad24 (. I (AD_o [24]),. O (AD_i [24]),. IO (AD [24]),. Т (AD_tri));
IOBUF_F_12 AD25 (. I (AD_o [25]),. O (AD_i [25]),. IO (AD [25]),. Т (AD_tri));
IOBUF_F_12 ad26 (. I (AD_o [26]),. O (AD_i [26]),. IO (AD [26]),. Т (AD_tri));
IOBUF_F_12 ad27 (. I (AD_o [27]),. O (AD_i [27]),. IO (AD [27]),. Т (AD_tri));
IOBUF_F_12 ad28 (. I (AD_o [28]),. O (AD_i [28]),. IO (AD [28]),. Т (AD_tri));
IOBUF_F_12 ad29 (. I (AD_o [29]),. O (AD_i [29]),. IO (AD [29]),. Т (AD_tri));
IOBUF_F_12 ad30 (. I (AD_o [30]),. O (AD_i [30]),. IO (AD [30]),. Т (AD_tri));
IOBUF_F_12 АД31 (. I (AD_o [31]). O (AD_i [31]). IO (AD [31]). Т (AD_tri));
ENDMODULE
IAM учащегося.
кто-нибудь помогать мне.
Спасибо заранее.