прост GPIO (opencore) проблем?

C

chensanlien

Guest
Dear All,

Опитвам се opencore.simple_gpio (ядец compiliable) simultation.

Аз намирам този код не ми expection съвпадение,

следното: моя testbech & оригиналния код

модул връх;

обл clk_i;
обл rst_i;
обл cyc_i;
обл stb_i;
обл adr_i;
обл we_i;
обл [7:0] dat_i;

тел [7:0] dat_o;
тел ack_o;
тел [7:0] GPIO;

simple_gpio U1 (
. clk_i (clk_i),. rst_i (rst_i),. cyc_i (cyc_i),. stb_i (stb_i),. adr_i (adr_i),. we_i (we_i),. dat_i (dat_i),
. dat_o (dat_o),. ack_o (ack_o),
. GPIO (GPIO)
);

винаги # 1 clk_i = ~ clk_i;

първоначално започва
clk_i = 0;
rst_i = 1;
cyc_i = 0;
stb_i = 0;
adr_i = 0;
we_i = 0;
dat_i = 0;
приключвам

Винаги @ (posedge clk_i) започва
dat_i <= # 20 dat_i 1;
приключвам

първоначално започва
# 20 rst_i = 1;
# 20 rst_i = 0;
# 20 we_i = 1;
# 20 cyc_i = 1; stb_i = 1; adr_i = 0;
# 200 cyc_i = 1; stb_i = 1; adr_i = 1;

приключвам

endmodule////////////////////////////////////////////////// ///////////////////
/ / / / / / / /
/ / / / OpenCores Обикновено General Purpose IO ядро / / / /
/ / / / / / / /
/ / / / Автор: Ричард Herveille / / / /
/ / / / Richard (в) asics.ws / / / /
/ / / / Www.asics.ws / / / /
/ / / / / / / /
////////////////////////////////////////////////// ///////////////////
/ / / / / / / /
/ / / / Copyright (C) 2002 Ричард Herveille / / / /
/ / / / Richard (в) asics.ws / / / /
/ / / / / / / /
/ / / / Това файла източник може да бъде използвана и разпространявана без / / / /
/ / / / Ограничение при условие, че това твърдение не е авторско право / / / /
/ / / / Отстранени от файла, и че всички производни работи съдържа / / / /
/ / / / Оригиналния авторски права и свързаните с поемане на отговорност .////
/ / / / / / / /
/ / / / Този софтуер се предоставя `` КАКТО СА И БЕЗ''/ / / /
/ / / / ЯВНИ ИЛИ НЕЯВНИТЕ ГАРАНЦИИ, ВКЛЮЧИТЕЛНО, НО НЕ САМО / / / /
/ / / / До, НЕЯВНИТЕ ГАРАНЦИИ ЗА ПРОДАВАЕМОСТ И ГОДНОСТ / / / /
/ / / / ЗА ОПРЕДЕЛЕНА ЦЕЛ.В НИКАКЪВ СЛУЧАЙ НА АВТОРА / / / /
/ / / / CONTRIBUTORS ИЛИ ДА НОСИ ОТГОВОРНОСТ ЗА ПРЕКИ, НЕПРЕКИ, / / / /
/ / / / СЛУЧАЙНИ, СПЕЦИАЛНИ, ПРИМЕРНИ ИЛИ ПОСЛЕДВАЩИ ЩЕТИ / / / /
/ / / / (ВКЛЮЧИТЕЛНО, НО НЕ САМО, ПОРЪЧКИ НА РЕЗЕРВНИ / / / /
/ / / / СТОКИ ИЛИ УСЛУГИ; ЗАГУБА НА ПОЛЗВАНЕ, данни или печалба; или / / / /
/ / / / ПРЕКЪСВАНЕ НА БИЗНЕСА) Все пак, предизвикани и по всякакви ТЕОРИЯ НА / / / /
/ / / / ОТГОВОРНОСТ, независимо дали в поръчката, ОГРАНИЧЕНА ОТГОВОРНОСТ ИЛИ НАРУШЕНИЕ / / / /
/ / / / (ВКЛЮЧИТЕЛНО НЕБРЕЖНОСТ ИЛИ ДРУГ НАЧИН), възникнали в някоя WAY OUT / / / /
/ / / / НА УПОТРЕБАТА НА ТОЗИ СОФТУЕР, ДОРИ АКО СА ИНФОРМИРАНИ ЗА / / / /
/ / / / ВЪЗМОЖНОСТТА ЗА ТАКИВА ВРЕДИ./ / / /
/ / / / / / / /
////////////////////////////////////////////////// ///////////////////

/ / CVS Вход
/ /
/ / $ Id: simple_gpio.v, V 1.2 2002/12/22 16:10:17 rherveille Exp $
/ /
/ / $ Дата: 2002/12/22 16:10:17 $
/ / $ Revision: 1.2 $
/ / $ Автор: rherveille $
/ / $ Locker: $
/ / $ Членка: Exp $
/ /
/ / История на промените:
/ / $ Вход: simple_gpio.v, срещу $
/ / Revision 1.2 2002/12/22 16:10:17 rherveille
/ / Фиксирана някои печатни грешки в документацията, раздел.
/ /
/ // /
/ / Много основни 8bit GPIO ядро
/ /
/ /
/ / Регистри:
/ /
/ / 0x00: Контрол Регистрация <io[7:0]>
/ / Бита 7:0 R / W Input / Output '1 '= режим
/ / '0 '= Режим на въвеждане
/ / 0x01: Линия Регистрация
/ / Бита 7:0 R Статус Текущи GPIO ПИН ниво
/ / W Изходна GPIO ПИН ниво продукция
/ /
/ /
/ / HOWTO:
/ /
/ / Използвайте игла като суровина:
/ / Програма на съответните малко в контролния регистър за "въвеждане на режим" ('0 ').
/ / The PIN's състояние (вход ниво) може да бъде проверена чрез четене на линия регистър.
/ / Писане на линия малко ПИН GPIO's Register, докато в режим на въвеждане няма ефект.
/ /
/ / Използвайте игла като изход:
/ / Програма на съответните малко в контролния регистър на "режим" ( "1").
/ / Програма изходното ниво на ПИН GPIO чрез писмено съответния бит в
/ / Линия се регистрирайте.
/ / Reading линия на ПИН GPIO's Register малко, докато в режим връща
/ / Ток ниво.
/ /
/ / Addapt основата за по-малко GPIOs:
/ / Ако по-малко от 8 GPIOs се изисква, от "IO" параметър може да се настрои
/ / Броят на необходимите прекъсва.GPIOs се назначават, като се започне от LSBs.
LSBs / /, така че само "IO" на регистъра, са валидни.
/ / Всички други бита (т.е. 8-'io "MSBs) се свежда до нула '0 '.
/ / Codesize е приблизително линейна в размер на прекъсва.Т.е. използването на
/ / 4 вместо 8 източници GPIO намалява размера на около.половина.
/ // / Synopsys translate_off
/ / "включва" timescale.v "
/ / Synopsys translate_on

модул simple_gpio (
clk_i, rst_i, cyc_i, stb_i, adr_i, we_i, dat_i, dat_o, ack_o,
GPIO
);

/ /
/ / Изходи & резултати
/ /
параметър IO = 8; / / брой на GPIOs

/ / 8bit Wishbone автобус роб интерфейс
вход clk_i / / часовник
вход rst_i / / Reset (Asynchronous активно ниска)
вход cyc_i / / цикъл
вход stb_i / / Strobe
вход adr_i / / adr_i адрес [1]
вход we_i / / напишете даде възможност
вход [7:0] dat_i / / изходни данни
продукция [7:0] dat_o / / въвеждане на данни
продукция ack_o / / нормален автобус прекратяване

/ / GPIO пина
Inout [IO: 1] GPIO;

/ /
/ / Модул орган
/ /
обл [IO: 1] Ctrl, ред; / / ControlRegister, LineRegister
обл [IO: 1] lgpio, llgpio / / щифта LatchedGPIO

/ /
/ / Параметър, извършва проверки
/ /
/ / Synopsys translate_off
първоначален
започвам
ако (IO>

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Охлаждам" border="0" />$ дисплей ( "simple_gpio: макс. 8 GPIOs поддържа.");
приключвам
/ / Synopsys translate_on

/ /
/ / Wishbone интерфейс

тел wb_acc = cyc_i & stb_i / / Wishbone достъп
wb_wr тел = wb_acc & we_i / / Wishbone пиша достъп

Винаги @ (posedge clk_i или negedge rst_i)
ако (~ rst_i)
започвам
Ctrl <= # 1 (((1'b0 IO)));
линия <= # 1 (((1'b0 IO)));
приключвам
иначе, ако (wb_wr)
IF (adr_i)
линия <= # 1 dat_i [IO-1: 0];
в противен случай
Ctrl <= # 1 dat_i [IO-1: 0];обл [7:0] dat_o;
Винаги @ (posedge clk_i)
IF (adr_i)
dat_o <= # 1 (((8-IO 1'b0 ())), llgpio);
в противен случай
dat_o <= # 1 (((8-IO 1'b0 ())), Ctrl);

обл ack_o;
Винаги @ (posedge clk_i или negedge rst_i)
ако (~ rst_i)
ack_o <= # 1 1'b0;
в противен случай
ack_o <= & # 1 wb_acc! ack_o;/ /
/ / GPIO раздел

/ / Капаче GPIO вход пина
Винаги @ (posedge clk_i)
lgpio <= # 1 GPIO;

/ / Капаче отново (намаляване на мета-RISC стабилност)
Винаги @ (posedge clk_i)
llgpio <= # 1 lgpio;

/ / Присвоите GPIO резултати
цяло число N;
обл [IO: 1] igpio; / / временно вътрешен сигнал

Винаги @ (Ctrl или ред)
за (N = 1; N <= IO; N = N 1)
igpio [N] <= Ctrl [N]?ред [N]: 1'bz;

присвоите GPIO = igpio;

endmoduleМоля помощ мой проблем!

 
Нейната доста трудно да се каже защо тя не отговаря на вашите очаквания, когато Dont кажа какви са те и си туберкулозата не е самоконтрол.

 

Welcome to EDABoard.com

Sponsor

Back
Top