Matthias F. wrote:
> Ich hab da im Xilinx code für den PCIe Endpoint folgendes:
>
> process(rd_be_o_int, req_addr_i)
> begin
>
> case rd_be_o_int(3 downto 0) is
>
> when "0000" => lower_addr <= req_addr_i(6 downto 2) & "00";
> when "---1" => lower_addr <= req_addr_i(6 downto 2) & "00";
Dann kann man wohl annehmen dass es in der Synthese als don't care
umgesetzt wird. Ich halte es für nicht sehr schlau Code zu schreiben der
sich in Synthese und Simulation unterschiedlich verhält, aber von
Standards scheint man bei Xilinx sowieso nicht übermäßig viel zu halten
(std_logic_unsigned...).
> Bzgl If vs Case dachte ich, dass der Unterschied ist, dass bei
> If-Elsif-Else unter Umständen Priorisierungslogik dazukommt
Ja, wenn sich die Bedingungen überlappen. Da muss man schon aufpassen
wenn man z.B. std_match verwendet.
Übrigens geht auch folgendes:
1 | case ... is
|
2 | when "0000" | "0001" | "0010" => ...;
|
3 | when others => ...;
|
4 | end case;
|
Spart ein bisschen Schreibarbeit.