Aug 23, 2009 22:00
Используемый мной тип сигналов имеет в параметрах всего лишь тип переносимых значений.
Ему можно добавить тип тактовых частот. Вот так:
data S clk a = S a (S a)Тогда получится задавать тип для устройств сопряжения между областями с разными тактовыми частотами:
interClockFIFO :: (Clock clkIn, Clock clkOut) =>
Int
-> (S clkIn (Maybe a),S clkOut Bool)
-> (S clkIn Bool,S clkOut (Maybe a))
interClockFIFO size (clockInValue,clockOutReady) = (clockInOverflow,clockOutValue)
where
....Это позволит не ошибиться при соединении сигналов разных тактовых частот. И даже целых компонент.
В Bluespec этому уделено определённое внимание.
моделирование аппаратуры,
Хаскель