Rekenen circuit divider probleem .....

K

kart339

Guest
Hallo ppl,
Ik ben het ontwerpen van een combinatorische logica blok waarvan een 6 bit verdeler is een belangrijk onderdeel.Ik kwam dit probleem toen ik de scheidingslijn gecodeerd in Verilog.Hier is de code ...

altijd @ (posedge clk) beginnen

if (rst) Div_Out = 0;

else if (highz) Div_Out = 6'bz;anders Div_Out = IN1/IN2;end / / end altijd

testbench:IN1 = 6'd4;IN2 = 6'd5;Ik krijg de oplossing als 0 en voor die gevallen waarin IN1> IN2, krijg ik 1.Ik word geacht om een fractionele nummer (zoals 0.5, 0.6 ... etc) als het resultaat voor gebruik in mijn volgende blok.Ik temporaritly dit probleem opgelost door gebruik te makenDiv_Out = IN1 * 10/IN2Ik krijg mijn resultaat als 8 voor 0,8 die ik nog steeds kan gebruiken. (Zoals het is logica)

Maar als duidelijk is zal ik geraakt op mijn gebied alsmede macht als ik dat 6 bit multiplier!Is er een betere oplossing is dat iemand weet ...... deel uw info.Zal zeer dankbaar zijn!
Bedankt iedereen!

Kart
 
Hallo kar
Neem eens een kijkje op de variabele Div_Out wordt aangegeven als echt, want als de registers niet worden aangegeven als echte dan wordt het integer divisie.Gelieve ook Relook in uw bibliotheek wat je requrie is een floating point divider ...heeft uw bibliotheek ondersteuning ..als er geen steun dan u zou kunnen hebben om je eigen ontwikkeling!

 
Hoi,
Wilt u HDL-code worden synthetiseerbare??Zo niet hier is de
oplossing ....
Code:module div (

/ / Outputs

Div_Out,

/ / Ingang

CLK, RST, highz, IN1, IN2

)

input CLK, RST, highz;

input [31:0] IN1, IN2;

output [31:0] Div_Out;

reg [31:0] Div_Out;

altijd @ (posedge clk) beginnen

if (RST)

Div_Out = 0;

else if (highz)

Div_Out = 'bz;

anders

Div_Out = $ realtobits ($ bitstoreal (IN1) / $ bitstoreal (IN2));

end / / end altijd

endmodule / / div
 
Bedankt voor uw tav guys!
Helaas, het ontwerp is gericht op worden gesynthetiseerd als een ASIC.Dus ik zou moeten synthetiseerbare code alleen gebruiken.Ik geloof niet dat de 'realtobits' is synthetiseerbare .... corrigeer me als ik fout zit.

coz it's routed to another combinational logic module( a MAX module) in my top level unit.

En ja, het moet een "floating point divider denk ik nu ..... is Div_out aangegeven als een draad
coz het is doorgeleid naar een andere combinatorische logica-module (een MAX-module) in mijn top-level-eenheid.Hoe verklaar ik Div_out als 'echte' en nog steeds te gebruiken als een draad?(Zou u verlenen mij dat de verklaring van de syntaxis?) En hoe kan ik controleren of mijn bibliotheek ondersteunt Floating point operaties?Semiconductorman .... zou u kunnen verduidelijken?Thanks again!
Kart

 
Geen Nand_gates code is niet synthesisable

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />

.... dat is alleen voor simulatie (Hij heeft het op de top van de code).Sommige libararies hebben macro's die direct intantiated voor floating-point operaties velen niet ...Get it contact op met de jongens die hebben de ASIC libarary en hen te informeren over uw probleem ..indien zij niet over een dergelijke macro dan moet je de uitvoering van de functie zelf!U kunt geen gebruik maken van de kloof operator die u momenteel gebruikt

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />
 
Ja .....

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />

Eigenlijk, s ik 'doen dit als een alternatief voor de codering in Spice ... op te slaan me wat tijd.Ik probeerde voor het genereren van een hek schematische niveau voor de gehele combinatie-blok en de overdracht dat handmatig zo Hspice dat ik niet hoefde te tijd te verspillen ontwerpen n optimaliseren van elk van de samenstellende delen in deze combinatie-blok.Niet vooruitlopen op deze kwestie ....

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />

Elke verdere ideeën ..... altijd welkom!

 
De DW mag niet ten uitvoer DIV.Je moet de ontwikkeling van de DIV algoritme zelf.

 
Eigenlijk ben ik nu denken van het gebruik van de SRT-algoritme in de P4-processor.Seeme als de enige haalbare optie links naar mij.Het maken van het circuit werk al is een andere zaak!

 
hoi,

Ik denk dat je kan vertrouwd zijn met de algoritmen tht beschikbaar zijn voor de berekening van deling effectief door calculcating de inverse van b, b ^ -1 en vervolgens vermenigvuldigen met a.Ik denk dat floating point vermenigvuldiging, kon u uitvoeren.ja, wanneer u de werking van het vinden van de inverse met behulp van het algoritme zou kunnen uitvoeren, dan moet u krijgt een zeer efficiënt algoritme.gij de benodigde ruimte te berekenen is een beetje meer ...er r 2 algoritmes die ik heb gezien een * b ^ -1 berekenen.Ik heb ze als hardcopy., zal proberen om het te scannen en post in een paar dagen.indien ur belanghebbende om verder te gaan dat er manieren ..coz de meer uitdagende en effectieve zeker.U kan zoeken voor de "BCH algoritme" ...wanneer u zich niet bewust zijn van het ...Ik herinner me de uitbreiding als Bill Cooke Hoover algoritme.hoop dat dit helpt.

@ lid

Ik zou scannen en hier post-it in de tijd van een dag!

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Lachten" border="0" />/ cedance
Last edited by cedance op 07 mrt 2005 9:33; bewerkten in totaal 1 keer

 
Hi Arun,
Ik zal proberen googlen het BCH algoritme ..... Maar ja, zou ik zeer op prijs stellen als u de harde kopie van het algoritme of de poort niveau schematische kon na wanneer u het hebt ...... zou me redden van oodles tijd!Eigenlijk iemand anders vertelde me dat iets dergelijks .... proberen om de inverse van een aantal te vinden en geeft dat aan een FP multiplier.Maar de weinige implementaties kwam ik gebruik gemaakt van een look up tabel die 2 ^ n inzendingen had voor een beetje operand.Dus voor een 6 bit, dacht ik dat het gewoon niet waard.Maar misschien hebt u een beter algo denk ik.Thanks man!
Kart

 
U kunt seriële oplossing: gebruik aftrekken en verschuiven, moet het vele cycli
(herstel of niet-herstel)
of u kunt Newton methode om solation van 1 / b

 
Dat wouldnt goed genoeg ..... ik ben het streven naar een responstijd van 10-12 ns.

 

Welcome to EDABoard.com

Sponsor

Back
Top