|
|
|
(Verilog) Таки в чём же различие между = и <= ?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Верилог это не совсем программирование, конечно. хотя в некотором смысле всё-таки программирование. думал, что различия между блокирующим и неблокирующим присваивании только в том, что все <= в одном блоке должны выполниться одновременно. соответственно, теоретически, если в блоке одно единственное присваивание, то должно быть всё равно какое использовать. понадобилось написать умеренно развесистый дизайн который будет использовать RAM. память есть на чипе, но чтобы гонять в симуляторе модуль памяти пришлось написать свой. Вот он вместе со вспомогательным счётчиком и тестбенчем: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. в таком виде он работает исправно, но в изначальной версии было написано вот так: Код: sql 1. и в память ничего не попадало. выход q оставался в неопределённом состоянии пожизненно. на представленной рисунке сверху изначальный вариант, снизу исправленный. Собственно хотел поинтересоваться у знающих людей, в чём же закавыка? в чём именно различается работа этих двух операторов в данном конкретном случае? Симулировал икарусом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2016, 19:31 |
|
||
|
(Verilog) Таки в чём же различие между = и <= ?
|
|||
|---|---|---|---|
|
#18+
Sarinвсе <= в одном блоке должны выполниться одновременно.Не совсем так. Это скорее: "присваивание не обязано быть прямо сейчас". Все что заявлено через = - должно выполняться "немедленно" и именно в том порядке как эти присвоения появляются в блоке. А все что <= должно выполняться параллельно в конце блока. Sarinсоответственно, теоретически, если в блоке одно единственное присваивание, то должно быть всё равно какое использовать.Да. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Тут не совсем ошибка. Можно заранее предсказать что запись в память произойдет раньше чем чтение из нее. Но выглядит это очень опасно... Вообще, очень не рекомендуется смешивать = и <= в одном блоке. А если все-же надо, то проще разрезать такой блок на два под-блока: последовательный и параллельный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2016, 20:34 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39321349&tid=1340591]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
58ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 318ms |

| 0 / 0 |
