Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. module Pipeline where
  2.  
  3. import Clash.Prelude
  4.  
  5. (<@>)
  6. :: ( HiddenClockResetEnable dom
  7. , Undefined b
  8. , Default b
  9. )
  10. => (a -> b)
  11. -> Signal dom a
  12. -> Signal dom b
  13. f <@> s =
  14. register def (f <$> s)
  15. infixr 9 <@>
  16.  
  17.  
  18.  
  19.  
  20. in1 :: Signal dom Int
  21. in1 = fromList [10..100]
  22.  
  23. added1 :: HiddenClockResetEnable dom => Signal dom Int
  24. added1 = (+1) <@> in1
  25.  
  26. multiplied1 :: HiddenClockResetEnable dom => Signal dom Int
  27. multiplied1 = (*2) <@> added1
  28.  
  29.  
  30.  
  31.  
  32. in2 :: HiddenClockResetEnable dom => Signal dom Int
  33. in2 = register 10 (in2 + 1)
  34.  
  35. added2 :: HiddenClockResetEnable dom => Signal dom Int
  36. added2 = (+1) <@> in2
  37.  
  38. multiplied2 :: HiddenClockResetEnable dom => Signal dom Int
  39. multiplied2 = (*2) <@> added2
  40.  
  41. {-
  42.  
  43. *Pipeline> sampleN @System 5 in1
  44. [10,11,12,13,14]
  45. *Pipeline> sampleN @System 5 added1
  46. [0,0,12,13,14]
  47. *Pipeline> sampleN @System 5 multiplied1
  48. [0,0,0,24,26]
  49. *Pipeline> sampleN @System 5 in2
  50. [10,10,11,12,13]
  51. *Pipeline> sampleN @System 5 added2
  52. [0,0,11,12,13]
  53. *Pipeline> sampleN @System 5 multiplied2
  54. [0,0,0,22,24]
  55.  
  56. -}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement