Vizitator Oana02 Postat Mai 9, 2014 Partajează Postat Mai 9, 2014 (editat) Buna!Ma poate ajuta si pe mine cineva cu cateva idei legate de un proiect in verilog?Proiectul presupune transformarea gradelor Celsius in Fahrenheit dupa formula: F=1,8*C+32, dar fara a se folosi inmultirea, ci doar shiftare de biti si adunari. Valoarea gradelor Celsius de intrare se va selecta din 6 comutatoare, iar valoarea gradelor Fahrenheit de iesire va fi afisata pe 4 afisoare de 7 segmente. (circuitul se implementeaza pt FPGA) Multumesc anticipat! Editat Mai 9, 2014 de Oana02 Nu e nevoie sa scri pe fond rosu ca sa vedem Link spre comentariu
cirip Postat Mai 10, 2014 Partajează Postat Mai 10, 2014 (editat) Buna, Ideea e sa transformi inmultirea cu 1.8 in deplasari si adunari. Ptr asta trebuie sa rescrii inmultirea si sa descompui factorul lui x in suma de puteri ale lui 2. Metoda 1========1.8*x = 2*x-0.2*x = 2*x-51.2*x/256 ~ 2*x-51*x/25651=64-8-4-1 = 2^6 - 2^3 - 2^2 -11.8*x + 32 = x<<1 - (x<<6 + x<<3 + x<<2 +x)>>8 +32Metoda 2========1.8*x ~ 461*x/256461 = 256+128+64+8+4+1 =2^8+2^7+2^6+2^3+2^2+11.8*x + 32 = (x<<8 + x<<7 + x<<6 + x<<3 + x<<2 + x)>>8 + 32Unde am notat: ~ aproximativ egal cu <<n deplasare (shift) la stanga cu n locatii, echivalenta cu inmultirea cu 2^n >>n deplasare (shift) la dreapta cu n locatii, echivalenta cu impartirea cu 2^n Cred ca de aici poti sa scrii singura codul. Nu te baza 100% pe ce am scris eu. In mod normal scrii codul si simulezi. Ce mediu de dezvoltare Verilog folosesti? Cirip Editat Mai 10, 2014 de cirip 1 Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum