2013-02-25 4 views
-1

저는 VHDL을 처음 사용하고 있으며 수정할 수없는 문제가 있습니다. 우리는 선택된 시그널 할당이나 테이블 룩업을 사용하여이를 수행해야합니다. 내 것은 일어나지 않을 입력에 신경 쓰지 않기 때문에 두 가지를 조합 한 것입니다.VHDL 오류 (간단한 표현식이 필요함)

코드는 기본적으로 2의 보수 입력 또는 오프셋 바이너리에 대해 동일한 출력을 제공한다고 가정합니다. 예를 들어, 10 진수 7은 오프셋 바이너리에서 "1111"이고 2의 보수에서 "0111"입니다. 두 양식 모두 스위치의 값에 따라 "1111100000"의 출력을 생성해야합니다 (오프셋 바이너리의 경우 '1', 2의 보수의 경우 '0').

나는이 수준에서 할 수있는 한 내 코드를 디버깅했으며 잘못된 것을 잘 이해하지 못합니다.

Active-HDL은 현재 48 행과 55 행에 오류를 표시합니다. 두 가지 "간단한 표현이 예상 됨"오류가 발생합니다.

내 코드는 더 나은 가독성과 구문 강조 기능을 제공하므로 아래의 pastebin URL에 있습니다 (더하기, Stack Exchange의 이상한 코드 게시 기능을 사용하는 것을 좋아하지 않습니다). 또한 할당 지침을 유지하면서 코드를 개선 할 수있는 방법에 대한 조언이 있으면 언제든지 제안 해주십시오.

http://pastebin.com/aAJAs6KQ

+0

의 정확한 중복 http://electronics.stackexchange.com/questions/59097/vhdl-error-simple-expression- –

답변

0

그냥 더 읽을 수 있도록 프로세스를 사용

... 
-- untested 
process(input, d, tmp, ob) 
begin 
    if ob = '1' then 
     led <= table(to_integer(unsigned(d & tmp))); 
    else     
     led <= table(to_integer(unsigned(not d & tmp))); 
    end if; 
end process; 
...  
+0

민감도 목록에 "input"이있는 이유는 무엇입니까? –

+0

맞습니다. 더 이상 입력 할 필요가 없습니다. – user2099996