W VHDL, jeśli chcesz zwiększyć wartość std_logic_vector, która reprezentuje liczbę rzeczywistą o jeden, natknąłem się na kilka opcji.Jak droga jest konwersja typu danych w porównaniu z manipulacją bitową w VHDL?
1) Użyj funkcji konwersji typów danych typecasting, aby zmienić wektor std_logic na wartość podpisaną lub niepodpisaną, a następnie przekonwertować ją na liczbę całkowitą, dodać do tej liczby całkowitej i przekonwertować z powrotem na std_logic_vector w odwrotny sposób niż poprzednio. Poniższy wykres jest przydatny przy próbie wykonania tej czynności.
2) Sprawdzić wartość LSB. Jeśli jest to "0", ustaw "1". Jeśli jest to "1", zrób "przesunięcie w lewo" i połącz "0" z LSB. Przykład: wektor (dla wektora 16-bitowego) (15 początków 1) & '0';
W FPGA, w porównaniu do mikroprocesora, fizyczne zasoby sprzętowe wydają się czynnikiem ograniczającym zamiast rzeczywistego czasu przetwarzania. Zawsze istnieje ryzyko, że zabraknie fizycznych bram.
Moje prawdziwe pytanie brzmi: która z tych implementacji jest "droższa" w FPGA i dlaczego? Czy kompilatory są wystarczająco wydajne, aby zaimplementować tę samą reprezentację fizyczną?
Twój drugi algorytm NIE zwiększa wartości o 1. Co stanie się, jeśli na przykład masz wartość "01001"? – fru1tbat
Ah ... Masz rację! –