RTV forum PL | NewsGroups PL

Jak zaimplementować 8-bitowy rejestr w VHDL z obsług± szyny trojstanowej?

VHDL - jak zrobic 8-bitowy rejestr

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zaimplementować 8-bitowy rejestr w VHDL z obsług± szyny trojstanowej?

Goto page Previous  1, 2, 3  Next

JA
Guest

Mon Jan 29, 2007 10:35 am   



T.M.F:


Quote:
No wlasnie, chce zrobic tak, ze mam procesor polaczony z CPLD,
w ktorym mam 16 rejestrow R/W, wyjscia tych rejestrow steruja
licznikami (wewnatrz CPLD), tu nie ma problemu.
Natomiast przy odczycie procesor wybiera jeden z 16 rejestrow,
[...]


bardzo dobrym multiplekserem, pod pewnymi warunkami,
jest po prostu wewnetrzny ram;
przy wyborze jednego rejestru z 16 ram zaoszczedzi sporo
logiki zwiazanej z multipleksowaniem;
i bedzie szybszy;

JA


--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

JA
Guest

Mon Jan 29, 2007 11:03 am   



mk:


[...]
Quote:
Ja tam wolę używać własnego rozumu a nie kompilatora
przy rozwikłaniu takich "sytuacji". Kompilator nie jest
Twoim "soulmate" i może się nie domy¶leć o co Ci chodziło ;-)

Jak się nie domy¶li, to nie będzie wiedział co zrobić
i zakończy kompilacje.
[...]


a jak sie domysli, ino zle ?
zartuje :)

Quote:
mk



--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

J.F.
Guest

Mon Jan 29, 2007 12:03 pm   



On 29 Jan 2007 10:35:46 +0100, JA wrote:
Quote:
T.M.F:
No wlasnie, chce zrobic tak, ze mam procesor polaczony z CPLD,
w ktorym mam 16 rejestrow R/W, wyjscia tych rejestrow steruja
licznikami (wewnatrz CPLD), tu nie ma problemu.
Natomiast przy odczycie procesor wybiera jeden z 16 rejestrow,
[...]

bardzo dobrym multiplekserem, pod pewnymi warunkami,
jest po prostu wewnetrzny ram;
przy wyborze jednego rejestru z 16 ram zaoszczedzi sporo
logiki zwiazanej z multipleksowaniem; i bedzie szybszy;

Ale on chce tymi rejestrami cos sterowac. A to oznacza klopot
zwiazany z dostepem do magistrali :-)

J.

JA
Guest

Mon Jan 29, 2007 12:13 pm   



J.F:

Quote:
Ale on chce tymi rejestrami cos sterowac. A to oznacza
klopot zwiazany z dostepem do magistrali Smile

nie, zapisuje wartosci do rejestrow i do ramu,
rejestry steruja a pamiec sluzy do odczytu tego,
co jest w rejestrach;

Quote:
J.

JA



--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

J.F.
Guest

Mon Jan 29, 2007 1:05 pm   



On 29 Jan 2007 12:13:29 +0100, JA wrote:
Quote:
J.F:
Ale on chce tymi rejestrami cos sterowac. A to oznacza
klopot zwiazany z dostepem do magistrali :-)

nie, zapisuje wartosci do rejestrow i do ramu,
rejestry steruja a pamiec sluzy do odczytu tego,
co jest w rejestrach;

A, no chyba ze tak.

Jeszcze mozna pomyslec zeby odczytu w ogole nie bylo,
w koncu procesorek chyba wie co zapisal.

J.

JA
Guest

Mon Jan 29, 2007 1:51 pm   



J.F:

Quote:
Jeszcze mozna pomyslec zeby odczytu w ogole nie bylo,
w koncu procesorek chyba wie co zapisal.

'mietcy' zwykle lubia sprawdzic, co wpisali
w hardware :)

przed laty poswiecilem 2 meetingi tlumaczac
programistom, ze moga sobie przechowywac dane
wpisane do rejestrow sterujacych [a byly ich
dziesiatki] w software, bo mnie wyprowadzenie
tych danych pozera logike, a fpga bylo male;
w koncu zrobilem wlasnie takie oszustwo, trzymalem
wartosci rejestrow rowniez w ramie i stamtad byl
odczyt ustawien;

Quote:
J.

JA




--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Pszemol
Guest

Mon Jan 29, 2007 2:58 pm   



"T.M.F." <tfrancuz@nospam.mp.pl> wrote in message news:epj6o8$59k$1@nemesis.news.tpi.pl...
Quote:
Na szczecie czesc jest krotsza. No i multiplexery chyba z pozostalych
bramek makroceli da sie zrobic? Zreszta zobacze co mi ISE na to powie. W
sumie max CPLD jaki widze xilinxa w Kamami ma 288 makroceli, co do FPGA
to wyraznie drozsze sa i chyba wszystkie wymagaja zewnetrznej pamieci
konfiguracji?

Zerknij na CPLD Altery o nazwie MAX II - duzo do wyboru i cena niezla.

Pszemol
Guest

Mon Jan 29, 2007 3:01 pm   



"JA" <j_andrWYTNIJTO@freenet.de> wrote in message news:62c7.00000035.45bdeded@newsgate.onet.pl...
Quote:
'mietcy' zwykle lubia sprawdzic, co wpisali
w hardware :)

przed laty poswiecilem 2 meetingi tlumaczac
programistom, ze moga sobie przechowywac dane
wpisane do rejestrow sterujacych [a byly ich
dziesiatki] w software, bo mnie wyprowadzenie
tych danych pozera logike, a fpga bylo male;
w koncu zrobilem wlasnie takie oszustwo, trzymalem
wartosci rejestrow rowniez w ramie i stamtad byl
odczyt ustawien;

Nie tylko "miętcy" ale przecież zawarto¶ć rejestru
może się zmieniać pomiędzy kolejnymi ustawieniami.
Porównaj rejestr statusu w UART.

JA
Guest

Mon Jan 29, 2007 3:34 pm   



Pszemol:


Quote:
Nie tylko "miętcy" ale przecież zawarto¶ć rejestru
może się zmieniać pomiędzy kolejnymi ustawieniami.
Porównaj rejestr statusu w UART.


mialem na mysli rejestry sterujace ustawiane przez
software, ktorych hardware nie moze zmienic;
chyba, ze taki rejestr moze byc zapisywany przez
kilka niezaleznych kontrolerow, ale to chyba nie jest
przypadek o ktorym pisal autor watku;

JA



--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

T.M.F.
Guest

Mon Jan 29, 2007 6:25 pm   



Quote:
mialem na mysli rejestry sterujace ustawiane przez
software, ktorych hardware nie moze zmienic;
chyba, ze taki rejestr moze byc zapisywany przez
kilka niezaleznych kontrolerow, ale to chyba nie jest
przypadek o ktorym pisal autor watku;

Nie, tak jak pisalem to bedzie kontroler LCD. W sumie po zastanowieniu
moge w ogole zrezygnowac w wiekszosci przypadkow z RW i zostawic
wylacznie mozliwosc zapisu rejestru, bez mozliwosci jego pozniejszego
odczytu, szczegolnie jesli to spowoduje, ze zmieszcze sie w tanszym CPLD.


--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

Pszemol
Guest

Mon Jan 29, 2007 8:58 pm   



"T.M.F." <tfrancuz@nospam.mp.pl> wrote in message news:eplarf$ki6$1@nemesis.news.tpi.pl...
Quote:
Nie, tak jak pisalem to bedzie kontroler LCD. W sumie po zastanowieniu
moge w ogole zrezygnowac w wiekszosci przypadkow z RW i zostawic
wylacznie mozliwosc zapisu rejestru, bez mozliwosci jego pozniejszego
odczytu, szczegolnie jesli to spowoduje, ze zmieszcze sie w tanszym CPLD.

Oczywiscie spowoduje mniejsza ilosc wymaganych LE, a to nie zawsze
oznacza mniejszy scalak: to czy uzyjesz 200 czy 220 nie spowoduje
przeciez mozliwosci przesiadki z chipu 256 na chip 128, prawda ?
A wiec proponuje zrobic uklad minimalny, sprawdzic w jakiej kostce
sie miescisz i potem jak Ci zostanie sporo miejsca to mozesz dodac
odczyt czy inne "wodotryski", bo wtedy niewiele to kosztuje...

Ale mowia ze dobre zasady tworzenia projektow wymagaja, aby nie
zuzyc wiecej niz 70% komorek, aby bylo za miesiac miejsce na
ewentualna poprawke jakiegos bledu wykrytego w fazie testow koncowych
lub jakies zapomniane feature, ktore mogloby sie nie zmiescic
w scalaku wypelnionym juz na poczatku po same brzegi...

T.M.F.
Guest

Mon Jan 29, 2007 10:30 pm   



Quote:
Oczywiscie spowoduje mniejsza ilosc wymaganych LE, a to nie zawsze
oznacza mniejszy scalak: to czy uzyjesz 200 czy 220 nie spowoduje
przeciez mozliwosci przesiadki z chipu 256 na chip 128, prawda ?

To oczywiste:)

Quote:
A wiec proponuje zrobic uklad minimalny, sprawdzic w jakiej kostce
sie miescisz i potem jak Ci zostanie sporo miejsca to mozesz dodac
odczyt czy inne "wodotryski", bo wtedy niewiele to kosztuje...

Pewnie masz racje, tyle, ze jako zupelnie poczatkujacy z VHDLu napisze
takie babole, ze po jakims czasie lapiac sie za glowe latwiej bedzie mi
to napisac od nowa:)


--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

Pszemol
Guest

Mon Jan 29, 2007 11:05 pm   



"T.M.F." <tfrancuz@nospam.mp.pl> wrote in message news:eplp15$t11$1@atlantis.news.tpi.pl...
Quote:
A wiec proponuje zrobic uklad minimalny, sprawdzic w jakiej kostce
sie miescisz i potem jak Ci zostanie sporo miejsca to mozesz dodac
odczyt czy inne "wodotryski", bo wtedy niewiele to kosztuje...

Pewnie masz racje, tyle, ze jako zupelnie poczatkujacy z VHDLu napisze
takie babole, ze po jakims czasie lapiac sie za glowe latwiej bedzie mi
to napisac od nowa:)

Wez sie tak nie doluj bez potrzeby bo przeciez nie swieci garnki lepia Smile

T.M.F.
Guest

Tue Jan 30, 2007 12:06 am   



Quote:
A wiec proponuje zrobic uklad minimalny, sprawdzic w jakiej kostce
sie miescisz i potem jak Ci zostanie sporo miejsca to mozesz dodac
odczyt czy inne "wodotryski", bo wtedy niewiele to kosztuje...

Pewnie masz racje, tyle, ze jako zupelnie poczatkujacy z VHDLu napisze
takie babole, ze po jakims czasie lapiac sie za glowe latwiej bedzie
mi to napisac od nowa:)

Wez sie tak nie doluj bez potrzeby bo przeciez nie swieci garnki lepia Smile

Ok, to prosze o pomoc, mam taki oto kod (to ma byc 20-bitowy licznik,
zerowany synchronicznie):

entity counter20 is
port(a : out bit_vector (19 downto 0);
clk : in bit;
rst : in bit);
end counter20;

architecture behv of counter20 is

signal a_tmp: bit_vector(19 downto 0);

begin
process(clk, rst)
begin
if rst = '0' and clk='1' and clk'event then
a_tmp <= (a_tmp'range => '0');
elsif
clk='1' and clk'event then a_tmp <= a+1;
end if;
end process;

a <= a_tmp;
end behv;

Problem w tym, ze na linii:
clk='1' and clk'event then a_tmp <= a+1;

wywala mi blad:
ERROR:HDLParsers:808 - Line ... + can not have such operands in this
context.
Ok, przypuszczam, ze to problem z niewlasciwym typem bit_vector, ale jak
go zamienie na std_logic_vector to okazuje sie, ze takiego nie mam,
mimo, ze zainkludowalem chyba wszystkie standardowe biblioteki:
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_textio.all;
use IEEE.std_logic_arith.all;
use IEEE.numeric_bit.all;
use IEEE.numeric_std.all;
use IEEE.std_logic_signed.all;
use IEEE.std_logic_unsigned.all;
use IEEE.math_real.all;
use IEEE.math_complex.all;

library STD;
use STD.textio;

Oczywiscie srodowisko to Xilinxowe WebISE 9.1 z SP1.
Co robie nie tak?
BTW. Pomijajac ten blad to czy reszta implementacji tego licznika jest ok?



--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

JA
Guest

Tue Jan 30, 2007 11:21 am   



T.M.F:


calkiem Ci nie pomoge, bo na codzien uzywam verolog,
a vhdl znam biernie, rozumiem, co czytam,
ale aby napisac cokolwiek musze zagladac do
ksiazek;
nie znosze vhdl za jego maniakalne czepianie sie
typow, co chyba jest zrodlem klopotow w Twoim przykladzie;



Quote:
begin
process(clk, rst)
begin
if rst = '0' and clk='1' and clk'event then
a_tmp <= (a_tmp'range => '0');
elsif
clk='1' and clk'event then a_tmp <= a+1;

------- tu chyba powinno byc a_tmp <= a_tmp + 1; ------


Quote:
end if;
end process;

a <= a_tmp;
end behv;

bardziej elegancko chyba bedzie:

if RISING_EDGE (CLK) THEN
if (rst = '0') THEN
a_tmp <= (a_tmp'range => '0');
else
a_tmp <= a_tmp + 1;
end if;
end if;

chodzi mi wylacznie o 'strukture' "if-else"
a nie o poprawnosc jezykowa, bo vhdl jest mi obcy,
rowniez ideowo :)

mysle, ze jak w googlach napiszesz "vhdl counter" to
bez problemow znajdziesz setki przykladow;

JA


--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Goto page Previous  1, 2, 3  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zaimplementować 8-bitowy rejestr w VHDL z obsług± szyny trojstanowej?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map