mirror of
https://github.com/MPSU/APS.git
synced 2025-09-16 01:30:10 +00:00
WIP: APS cumulative update (#98)
* WIP: APS cumulative update * Update How FPGA works.md * Перенос раздела "Последовательностная логика" в отдельный док * Исправление картинки * Исправление оформления индексов * Переработка раздела Vivado Basics * Добавление картинки в руководство по созданию проекта * Исправление ссылок в анализе rtl * Обновление изображения в sequential logic * Исправление ссылок в bug hunting * Исправление ссылок * Рефактор руководства по прошивке ПЛИС * Mass update * Update fig_10 * Restore fig_02
This commit is contained in:
committed by
GitHub
parent
78bb01ef95
commit
a28002e681
@@ -8,7 +8,7 @@
|
||||
|
||||
Обычно появление защелки в цифровой схеме говорит об ошибке разработки: в случае, если планировалась комбинационная логика, добавление защелки приведет к непредвиденному удержанию предыдущих значений (поскольку защелка сохраняет предыдущее значение до прихода очередной комбинации управляющего сигнала, описанной в блоке `case`). Это особенно плохо, если сигнал, перед которым появилась защелка, чем-то управляет. Представьте, что он управляет сейфом, который должен открываться если ввели правильный пароль:
|
||||
|
||||
```SystemVerilog
|
||||
```Verilog
|
||||
always_comb begin
|
||||
if(password_is_correct) begin
|
||||
open_the_safe <= 1'b1;
|
||||
@@ -18,7 +18,7 @@ end
|
||||
|
||||
Вроде бы вы все описали правильно: "если ввели правильный пароль — сейф откроется". Однако проблема в том, что это состояние сохранится, и сейф уже не закроется. Именно поэтому у каждого блока `if` должен быть свой блок `else`:
|
||||
|
||||
```SystemVerilog
|
||||
```Verilog
|
||||
always_comb begin
|
||||
if(password_is_correct) begin
|
||||
open_the_safe <= 1'b1;
|
||||
@@ -33,7 +33,7 @@ end
|
||||
|
||||
Ещё один пример:
|
||||
|
||||
```SystemVerilog
|
||||
```Verilog
|
||||
module unexpected_d_latch_ex(
|
||||
input logic [1:0] S,
|
||||
input logic D0,
|
||||
|
Reference in New Issue
Block a user