Судья високосный год

X

xofun

Guest
Привет, всем:
Легко достичь ее в код C:

если (год% 4 == 0 & & года 100%! = 0 | | год% 400 == 0)

Я хочу перенести код на C Verilog код.Есть функция aviliable судить год можно разделить точно по 4100 или 400? По сдвиг вправо "год" с кодом "год>> 1" дважды за время, это нормально, если я получаю 2 zeros.Then как насчет 100 и 400?

С уважением

 
Вот Verilog код!

Код:

/ Лет * скачок все годы делится на 4,

кроме того, что лет кратных 100 не високосный год,

но лет делится на 400 являются високосные годы.Кодирование года:Binary?
легко делится на 4,

но трудно на 100 и 400 (не полномочиях 2)BCD?
Легко на 100,

но более трудно 4, что около 400?Части:

построить схему, которая определяет, будет ли год делится на 4

построить схему, которая определяет, будет ли год делится на 100

построить схему, которая определяет, будет ли год делится на 400

объедините результаты трех предыдущих шагов для получения флага високосный годСсылка:

Современная логика дизайн Randy H. Кац 2-е изд Глава 5

* /Модуль скачок (/ * AUTOARG * /

/ / Мероприятия

leap_year_flag,

/ / Входы

год

);

вход [15:0] года / / лет в 4-х разрядный BCD

выходной leap_year_flag;Проволока div_by_100, div_by_400;

р div_by4;/ * Делимый на 4 схема

Достаточно взглянуть на младшие две цифры года

все годы, оканчивающиеся на 00, 04, 08, 12, 16, 20 и т.д., делится на 4если десятки цифра даже, а затем делится на 4, если те цифра 0, 4 или 8

десятки цифр, если нечетное, то делится на 4, если те, цифра 2 или 6.

Означает следующее логическое выражение

* /

Всегда @ (/ * * AS / год)

если (год [4]) начинается / / десятки цифр нечетного

div_by4 = (год [3:0] == 4'h2) | (год [3:0] == 4'h6);

END ELSE BEGIN

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

конец/ *

Делимый-By-100 просто требует проверки того, что все биты двух младших цифр равны 0:

* /

назначить div_by_100 = (год [7:4] == 4'h0) & (год [3:0] == 4'h0);/ *

Делимый-By-400 сочетает в себе делимые на 4

(применительно к сотням тысяч и цифры)

и делится-By-100 схема

* /

назначить div_by_400 = div_by_100 & div_by4;назначить leap_year_flag = div_by4 & (~ div_by_100) | div_by_400;ENDMODULE / / Leap

 

Welcome to EDABoard.com

Sponsor

Back
Top