Judge keliamieji metai

X

xofun

Guest
Hi, all:
Labai lengva jį pasiekti, C kodas:

jei (year% 4 == 0 & &% 100 metų! = 0 | | metai% 400 == 0)

Noriu perduoti C kodą verilog kodą.Ar egzistuoja funkcija aviliable spręsti metus galima suskirstyti tiksliai iki 4.100, arba 400? Dešiniuoju Shift "metai" kodu "metai> 1" dukart laiko, tai OK, jei gausiu 2 zeros.Then How about 100 400?

Nuoširdžiausi linkėjimai

 
Čia yra verilog kodą!

Kodas

/ * Keliamieji metai yra visus metus skirstoma į 4,

išskyrus tai, kad metų dalijama 100 nėra keliamieji metai,

bet metai dalijama 400 yra keliamieji metai.Kodavimas metai:Dvejetainė?
lengva skirstoma į 4,

bet sunku 100 ir 400 (ne galios 2)BCD?
paprasta 100

bet sunkiau 4, ką apie 400?Dalys:

pastatyti grandinė, kuri lemia, jei metus skirstoma į 4

pastatyti grandinė, kuri lemia, jei metus dalijama iš 100

pastatyti grandinė, kuri lemia, jei metus skirstoma 400

sujungti ankstesnių trijų žingsnių, kad derlius keliamieji metai vėliava rezultataiNuoroda

Šiuolaikinė logika dizainas Randy G. Katz, 2nd ed 5 skyrius

*modulis šuolis (/ * AUTOARG * /

/ / Outputs

leap_year_flag,

/ / Inputs

metai

)

input [15:0] metų; / / metai 4 skaitmenų BCD

produkcija leap_year_flag;viela div_by_100, div_by_400;

reg div_by4;/ * Dalomas-by-4 grandinė

Tik reikia žiūrėti į mažas, kad du skaitmenys metų

visiems metams, kuri baigiasi 00, 04, 08, 12, 16, 20, ir tt yra skirstoma į 4jei dešimčių skaitmuo yra net, tada skirstoma į 4, jei tie skaitmuo yra 0, 4 arba 8

jei dešimčių skaitmuo nelyginis, tada skirstoma į 4, jei tie skaitmuo yra 2 arba 6.

Verčia į šias Bulio išraiška

*

visada @ (/ * AS * / metus)

if (metais) [4] Pradžia / / dešimčių skaitmuo nelyginis

div_by4 = (metais [3:0] == 4'h2) | (metais [3:0] == 4'h6);

end else begin

div_by4 = (metais [3:0] == 4'h0) | (metais [3:0] == 4'h4) | (metais [3:0] == 4'h8);

pabaiga/ *

Dalomas-by-100 tik reikia patikrinti, kad visi dviejų mažai, kad skaitmenys yra visi 0 bitų:

*

priskirti div_by_100 = (metais [7:4] == 4'h0) & (metais [3:0] == 4'h0);/ *

Dalomas-by-400 apjungia dalomas-by-4

(taikoma iki tūkstančių ir šimtų skaitmenų)

ir padalyti-by-100 grandinės

*

priskirti div_by_400 = div_by_100 & div_by4;priskirti leap_year_flag = div_by4 & (~ div_by_100) | div_by_400;endmodule / / šuolis

 

Welcome to EDABoard.com

Sponsor

Back
Top