case
  • vhdl
  • 2010-09-14 23 views 17 likes 
    17

    Bên trong một quá trình tôi có một cái gì đó như thế này:VHDL xách/Thời gian: nhiều trường hợp, đơn khoản

    CASE res IS 
        WHEN "00" => Y <= A; 
        WHEN "01" => Y <= A; 
        WHEN "10" => Y <= B; 
        WHEN "11" => Y <= C; 
        WHEN OTHERS => Y <= 'X'; 
    END CASE; 
    

    Lưu ý trường hợp đó "00""01" nhận được giá trị tương tự. Có cú pháp chính xác cho một cái gì đó như

    WHEN "00", "01" =>?

    Lưu ý bổ sung: Có nhiều điều hơn thế này so với Y đang thay đổi, tôi chỉ sử dụng để đơn giản. Vì vậy, trường hợp/khi là cần thiết.

    Trả lời

    28

    Bạn có thể tách nhiều lựa chọn bằng ký hiệu "đường ống" hoặc thanh. Cú pháp thích hợp ví dụ của bạn là:

    CASE res IS 
        WHEN "00" | "01" => Y <= A; 
        WHEN "10" => Y <= B; 
        WHEN "11" => Y <= C; 
        WHEN OTHERS => Y <= 'X'; 
    END CASE; 
    
    2

    Bạn cũng có thể cung cấp cho một loạt các lựa chọn cho một trường hợp:

    USE IEEE.STD_LOGIC_ARITH.ALL; 
    
    CASE CONV_INTEGER(res) IS 
        WHEN 0 to 1 => Y <= A; 
        WHEN 2 => Y <= B; 
        WHEN 3 => Y <= C; 
        WHEN OTHERS => Y <= 'X'; 
    END CASE; 
    
    Các vấn đề liên quan