2013-04-19 36 views
10

Tôi thích sự gọn gàng của toán tử bậc ba so với mệnh đề.VHDL có một toán tử bậc ba không?

Nhà điều hành này có tồn tại trong vhdl không? Tìm kiếm của tôi là ngược lại. Tôi cũng đã kiểm tra câu lệnh khi nào nhưng không phải là nhà điều hành, và tôi cũng muốn có thể sử dụng nó trong quá trình ...

Trả lời

9

No. Nó đã được thảo luận cho VHDL-2008 nhưng không tham gia. Bạn có một vài tùy chọn. Nếu công cụ của bạn hỗ trợ VHDL-2008, bài tập điều kiện hiện được hỗ trợ như báo cáo tuần tự (họ trước đây chỉ đồng thời), do đó bạn có thể viết một cái gì đó như:

process(clock) 
begin 
    if rising_edge(clock) then 
    q <= '0' when reset else d; -- ie. much like q <= reset? '0':d; 
    end if; 
end process; 

Nếu bạn chưa nhận được năm 2008, chỉ cần viết một hàm (q <= sel(reset, '0', d)). Bạn phải viết nó cho mọi loại bạn quan tâm, mặc dù.

+0

Làm cách nào để thêm nhiều khi điều khoản khác? Tôi dường như không thể nhận được '(cond khi x else y) + (cond khi z else w)' để làm việc. –

10

Không giống như bạn biết từ C/C++ nhưng bạn có thể sử dụng:

destination <= signal1 when condition else signal2; 
Các vấn đề liên quan