[an error occurred while processing this directive]
Может при оптимизации что-то выкинулось? Автомат не сбрасывается, хотя все default аккуратно прописаны (+)
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Tiro 04 ноября 2003 г. 10:58
В ответ на: Ну зачем-же. Смотреть в какой части нетлиста лажа, и править соотв. часть исходников. У меня при синтезе Synopsys'ом такое пару раз пришлось делать. отправлено SМ 04 ноября 2003 г. 09:15

Гляньте исходник, может сразу что в глаза бросится.

`timescale 1ns / 100ps

// ???? PLX9080 <-> IDMA ???? ADSP-2181

module idma_bridge (
lclk, ads, wr, rd, addr, data, ready, // ??????? ????????? ???? PLX9080 (????????????? ??????)
iack, iad, ial, isel, iwr, ird, // ??????? ????? IDMA ADSP-2181 (????????????? ??????)
state
);
// ??????? ????????? ???? PLX9080

input lclk; // ???? LCLK
input ads; // ???? ADS
input wr; // ???? WR (?????? / ?????? ?????????, ????? ?? ?????????? ?????? ????????? ?????)
input rd; // ???? RD
input [15:0] addr; // ???? ???? ADDR [15:0]
inout [31:0] data; // ???? / ????? ???? DATA [31:0]
output ready; // ????? READY

reg ready;

// ??????? ????? IDMA ADSP-2181

input iack; // ???? IACK
inout [15:0] iad; // ???? / ????? IAD
output ial; // ????? IAL
output isel; // ????? ISEL
output iwr; // ????? IWR
output ird; // ????? IRD

wire [15:0] iad;
reg ial;
reg isel;
reg iwr;
reg ird;

output [ 3:0] state;

// ?????????? ?????

reg [15:0] loword;
reg [15:0] hiword;

reg [ 3:0] state;

parameter IDMA_RDY= 0; // ???? ? ????????? ??????????
parameter IREQ_ADR= 1; // ?????? ????? ????????? ?????? ????? IDMA
parameter IACK_ADR= 2; // ????????????? ????? ????????? ?????? ????? IDMA
parameter IRDY_ADR= 3; // ?????????? ????? ????????? ?????? ????? IDMA
parameter IREQ_WRL= 4; // ?????? ????? ?????? ???????? ????? ?????? ? ???? IDMA
parameter IACK_WRL= 5; // ????????????? ????? ?????? ???????? ????? ?????? ? ???? IDMA
parameter IRDY_WRL= 6; // ?????????? ????? ?????? ???????? ????? ?????? ? ???? IDMA
parameter IREQ_WRH= 7; // ?????? ????? ?????? ???????? ????? ?????? ? ???? IDMA
parameter IACK_WRH= 8; // ????????????? ????? ?????? ???????? ????? ?????? ? ???? IDMA
parameter IRDY_WRH= 9; // ?????????? ????? ?????? ???????? ????? ?????? ? ???? IDMA
parameter IREQ_RDL= 10; // ?????? ????? ?????? ???????? ????? ?????? ?? ????? IDMA
parameter IACK_RDL= 11; // ????????????? ????? ?????? ???????? ????? ?????? ?? ????? IDMA
parameter IRDY_RDL= 12; // ?????????? ????? ?????? ???????? ????? ?????? ?? ????? IDMA
parameter IREQ_RDH= 13; // ?????? ????? ?????? ???????? ????? ?????? ?? ????? IDMA
parameter IACK_RDH= 14; // ????????????? ????? ?????? ???????? ????? ?????? ?? ????? IDMA
parameter IRDY_RDH= 15; // ?????????? ????? ?????? ???????? ????? ?????? ?? ????? IDMA

reg [ 2:0] bridge;

parameter DISCONNECT= 0;
parameter IDMA_DATA= 1;
parameter ADDR_IDMA= 2;
parameter LODATA_IDMA= 3;
parameter HIDATA_IDMA= 4;

always @ (negedge lclk) begin
case (state)
IDMA_RDY : case ({ads, wr, rd})
3'b100,
3'b101,
3'b110 : state <= iack ? IACK_ADR : IREQ_ADR;
3'b010 : state <= iack ? IACK_WRL : IREQ_WRL;
3'b001 : state <= iack ? IACK_RDL : IREQ_RDL;
default : state <= IDMA_RDY;
endcase
IREQ_ADR : state <= iack ? IACK_ADR : IREQ_ADR;
IACK_ADR : state <= iack ? IRDY_ADR : IACK_ADR;
IRDY_ADR : case ({ads, wr, rd})
3'b010 : state <= iack ? IACK_WRL : IREQ_WRL;
3'b001 : state <= iack ? IACK_RDL : IREQ_RDL;
default : state <= IDMA_RDY;
endcase
IREQ_WRL : state <= iack ? IACK_WRL : IREQ_WRL;
IACK_WRL : state <= iack ? IRDY_WRL : IACK_WRL;
IRDY_WRL : state <= iack ? IACK_WRH : IREQ_WRH;
IREQ_WRH : state <= iack ? IACK_WRH : IREQ_WRH;
IACK_WRH : state <= iack ? IRDY_WRH : IACK_WRH;
IRDY_WRH : case ({ads, wr, rd})
3'b100,
3'b101,
3'b110 : state <= iack ? IACK_ADR : IREQ_ADR;
3'b010 : state <= iack ? IACK_WRL : IREQ_WRL;
3'b001 : state <= iack ? IACK_RDL : IREQ_RDL;
default : state <= IDMA_RDY;
endcase
IREQ_RDL : state <= iack ? IACK_RDL : IREQ_RDL;
IACK_RDL : state <= iack ? IRDY_RDL : IACK_RDL;
IRDY_RDL : state <= iack ? IACK_RDH : IREQ_RDH;
IREQ_RDH : state <= iack ? IACK_RDH : IREQ_RDH;
IACK_RDH : state <= iack ? IRDY_RDH : IACK_RDH;
IRDY_RDH : case ({ads, wr, rd})
3'b100,
3'b101,
3'b110 : state <= iack ? IACK_ADR : IREQ_ADR;
3'b010 : state <= iack ? IACK_WRL : IREQ_WRL;
3'b001 : state <= iack ? IACK_RDL : IREQ_RDL;
default : state <= IDMA_RDY;
endcase
default : state <= IDMA_RDY;
endcase
end

always @ (posedge lclk) begin
case (state)
IDMA_RDY : begin
bridge <= DISCONNECT;
ial <= 0;
isel <= 0;
iwr <= 0;
ird <= 0;
ready <= 0;
end
IACK_ADR : begin
bridge <= ADDR_IDMA;
ial <= 1;
isel <= 1;
ready <= 0;
end
IRDY_ADR : begin
ial <= 0;
isel <= 0;
ready <= 0; // PLX9080 ?? ??????? ????????????? ????? ????????? ??????
end
IACK_WRL : begin
bridge <= LODATA_IDMA;
isel <= 1;
iwr <= 1;
ready <= 0;
end
IRDY_WRL : begin
isel <= 0;
iwr <= 0;
ready <= 0; // ?? ???? ????????????? ????? ?????? ???????? ?????
end
IACK_WRH : begin
bridge <= HIDATA_IDMA;
isel <= 1;
iwr <= 1;
ready <= 0;
end
IRDY_WRH : begin
isel <= 0;
iwr <= 0;
ready <= 1; // ????????????? ?????? ???????? ?????
end
IACK_RDL : begin
bridge <= DISCONNECT;
isel <= 1;
ird <= 1;
ready <= 0;
end
IRDY_RDL : begin
loword <= iad;
isel <= 0;
ird <= 0;
ready <= 0; // ?? ???? ????????????? ????? ?????? ???????? ?????
end
IACK_RDH : begin
bridge <= IDMA_DATA;
isel <= 1;
ird <= 1;
ready <= 0;
end
IRDY_RDH : begin
hiword <= iad;
isel <= 0;
ird <= 0;
ready <= 1; // ????????????? ?????? ???????? ?????
end
endcase
end

assign iad= bridge == ADDR_IDMA ? addr : 16'bz;
assign iad= bridge == LODATA_IDMA ? data [15: 0] : 16'bz;
assign iad= bridge == HIDATA_IDMA ? data [31:16] : 16'bz;

assign data [15: 0]= bridge == IDMA_DATA ? loword : 16'bz;
assign data [31:16]= bridge == IDMA_DATA ? hiword : 16'bz;

endmodule


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru