problem z o primeru v VHDL

R

rg350dxlover

Guest
Hi ... Torej, v bistvu, če je vhod = 1000, potem je enako. sicer ni enako. Imam težave z nekaj o primeru tukaj. Ne morem ugotoviti, kaj je to. Upam, da si fantje mi lahko pomaga s tem. Hvala! Tukaj je moj game_counter koda: knjižnica IEEE; uporabo ieee.std_logic_1164.all, uporaba ieee.std_logic_arith.all, subjekt game_counter je vrata (RST, CLK: v std_logic; COUNT_NUM: od nepodpisane (3 downto 0)); end game_counter, arhitektura lok game_counter je signala COUNT: unsigned (3 downto 0); začeti proces (CLK, RST), začeti, če RST = '0 ', potem COUNT '0'); elsif rising_edge (CLK) potem, če COUNT <9 potem COUNT
 
več težav:
uporabo ieee.std_logic_arith.all;
Dont uporabo tega paketa, to je non-standard. Uporaba numeric_std isntead: ieee.numeric_std.all; 2. V primerjavo:
- knjižnice, ki se uporabljajo, so tu določene knjižnica IEEE; uporabo IEEE.STD_LOGIC_1164.ALL,
Dodati morate numeric_std knjižnico za ogled nepodpisan vrsto. 3.
Code:
 signala X: std_logic_vector (3 downto 0); začne gc0: game_counter vrata map (inCLK, inRST, COUNT_NUM), proces (COUNT_NUM) začeti if (COUNT_NUM = "1000"), v tem primeru enaka
 
Niste poročilo določeno sporočilo o napaki, vendar gre v resnici za več napak. inCLK, inRST: v std_logic_vector (3 downto 0), je treba std_logic RST, CLK: v std_logic_vector (3 downto 0), je treba std_logic COUNT_NUM undefined v podjetje primerjati COUNT_NUM
 
Hvala TrickyDicky in FVM. Torej sem naredil nekaj urejanje glede na vaše komentarje in dobil zmeden na tej poti. Ampak tam je še vedno napaka. Je kaj narobe z operaterjem za -> if (inCLK = "1000"), potem pa .... Tu je edited različica. ------------------------------- Knjižnica IEEE; uporabo ieee.std_logic_1164.all, uporaba ieee.numeric_std.all; podjetje primerjati je vrata (inCLK, inRST: v std_logic; Q, enako, neenake: od nepodpisane (3 downto 0)); end primerjati, arhitektura Vedenjska za primerjavo je sestavni game_counter vrata (CLK, RST: v std_logic; COUNT_NUM: od unsigned (3 downto 0)); end komponente, za vse: game_counter uporabo subjekt work.game_counter (nad); signala X: unsigned (3 downto 0); začne gc0: game_counter vrata map (inCLK, inRST, X), proces (X) začnejo if (inCLK = "1000"), potem X
 
vi vekanje dodelite kaj za X, ker je njegova že priključeni na game_counter komponento. Še huje, ne morete dodeliti X od izhodov. če inCLK = "1000", potem inCLK je en bit, tako da vam ne moremo primerjati na matriko. Zakaj želite primerjati inclock na številko anyway? Mislim, da pomeni: če je X = "1000" in nato, ali še bolje, če X = 8 nato Tukaj je koda Mislim, da si mislil:
Code:
 procesa (inCLK) začeti če rising_edge (inCLK), nato pa, če X = 8 nato EQUAL
 
OMG velika hvala. To je točno to, kar sem mislila. Kaj sem mislil? Oprostite Mislim, da sem pravkar potrebujete več prakse s tem. Kakorkoli že, nisem prepričan, če kaj delam, je prav ali narobe. Ampak v bistvu, sem moral oblikovati igra, kjer se šteje do 0-9. Če uporabnik ulov vhod 8 potem bo števec šel na naslednjo stopnjo (pogostost divider je še vedno v teku), sicer bo ostal na trenutni ravni. Bo številka dela za ta sistem?
 
kako si proizvajajo frekvenco divider? ne bi smeli ustvariti ura - ki jih morajo voditi stalno uro in ustvarjajo ura omogoča, da na različnih stopnjah (obstajajo težave s časovno razporeditvijo, ko si boste ustvarili lastno ure). Nadaljujte s tem, kar počnete. Pridi nazaj, če potrebujete več pomoči.
 
Hvala za smernice. Toda, kako obdržati uro konstantno in ustvarjajo ura omogoča, da na različnih stopnjah? za to v nasprotju moram ustvariti od 1 Hz do 10 Hz s prirastkom po 1 Hz za vsako stopnjo.
 
standardna ura omogoča predlogo je ta:
Code:
 proces (CLK) začeti če rising_edge (CLK) potem, če omogočajo = '1 'potem - nekaj narediti konec, če, če je konec, konec procesa,
Nato drugje, namesto da bi ustvarjanja toggling uro, samo ustvariti omogočajo, da ta traja 1 uro cikel. na primer, če uporabljate veliko bit na števec (kot večina ljudi pri ustvarjanju frekvenco divider), vse, kar morate storiti, je videti, ko števec je posebna vrednost
Code:
 proces (CLK) začeti če rising_edge (CLK) potem šteje
 
Živjo še enkrat ... Jaz sem zaljubljen. Ne morem ugotoviti, kako to popraviti, ampak tam je zmota rek -> ne more določiti opredelitev subjekta "+" in napaka s tega področja -> X
 
Hej, problem je, da je stopnja tipa std_logic, "+" - operater lahko uporablja samo pri celi števili in podpisana / nepodpisani. Poleg tega, VHDL je močno tipizira jezik, kar pomeni, da: izhod
 
153. Hvala. Sem že, da je določen. Ampak jaz še druge napake. še enkrat. = / Hvala vnaprej. knjižnica IEEE; uporabo ieee.std_logic_1164.all, uporaba ieee.numeric_std.all, subjekt frequency_divider je vrata (divCLK: v std_logic; ravni: v nepodpisane (3 downto 0); CLK_out: od std_logic); konec frequency_divider, arhitektura vedenja frequency_divider je znak X: unsigned (3 downto 0); začne proces (divCLK, stopnja) spremenljivka count: integer območju od 0 do 9; začeti če rising_edge (divCLK), nato pa, če (število rem 16) = 0, potem - visoka za 1, nizka za 15 count: = število + 1, če je število <9 potem X
 
Jaz pa še druge napake. še enkrat.
Zgrešil si povedati o tem. Preostanek 16 operacija zdi precej neuporabna za območje 0-9 celo število. Kljub temu, da prepreči štetje presegla vrednost 1. Je to tisto, kar želite?
Code:
, če (število rem 16) = 0, potem - visoka za 1, nizka za 15 count: = število + 1, če je število <9 potem X
 
Hvala FVM.
preostanek 16 operacija zdi precej neuporabna za območje 0-9 celo število. Kljub temu, da prepreči štetje presegla vrednost 1. Je to tisto, kar želite?
Code:
No, to ni tisto, kar hočem. Mislim, ne želim, da se prepreči štetje presegla vrednost 1. Kakorkoli že, naredil nekaj razprave s prijateljem in smo dobili to. knjižnica IEEE; uporabo ieee.std_logic_1164.all, uporaba ieee.numeric_std.all, subjekt frekvenca je vrata (CLK, SEL: v std_logic; clkdiv: v unsigned, q: od std_logic); end frekvence, arhitektura lok frekvence signala temp : unsigned; signala CLK1Hz, CLK2Hz, CLK3Hz, CLK4Hz, CLK5Hz, CLK6Hz, CLK7Hz, CLK8Hz, CLK9Hz, CLK10Hz: nepodpisani; začeti proces (CLK) začeti če rising_edge (CLK) potem temp
 
več težav. Prva: Temp nima meja - niti vse vaše uro signale. Drugič: clkdiv (n) je std_logic, ne nepodpisan! Tretjič: Ti si točno to, kar sem ti rekel NE storiti - si ustvarjajo obremenitev ure, ne pa ustvarjanje obremenitev omogoča. To je slaba stvar (lahko povzroči vse vrste težav s časom z večjimi modeli, boste morda oditi z njim v manjši design, vendar je njegova slaba praksa!)
 
Žal mi je (VHDL je nekoliko zapleteno, v moji glavi), vendar ne dobim tisto, kar je pomenilo:.
si ustvarjajo obremenitev ure, ne pa ustvarjanje obremenitev omogoča [/ QUOTE ] Upam, da ste lahko to razložite. Prav, kaj to pomeni z vozniki, ki imajo stalno? Hvala!
 
Kaj mu pomeni, da bi oblikovanje vedno imajo eno uro "line" SAMO. Kaj delaš z vsemi tistimi, signali, ustvarja kot 10 različnih linij uro, nato pa jih povezujejo z enim izhodom. To bo ustvarilo težave s časovno razporeditvijo kasneje eno, ko imate kup komponent teče na kup različnih ure Moraš se 10 izhodov, in vsak od njih dobil vrednost po določenem času: ko je "0000" => outp1HZ outp2Hz
 
153. Hvala. Mislim, da sem dobil bolj jasno sliko zdaj. Toda kaj napaka "ne more rešiti več vozniki pomeni konstantno"?
 
Toda kaj napaka "ne more rešiti več vozniki pomeni konstantno"?
Kot kaže, ni več vprašanje voznika v posted kodo. Napaka pomeni, si ne upošteva pravilo, VHDL, da se lahko signal le dodeljena na enem mestu v sočasnih kodo oziroma le en proces. To je tipično, ki razkrivajo nejasnosti glede celotne strukture kodo.
 

Welcome to EDABoard.com

Sponsor

Back
Top