-
[디지털시스템] Procedure를 이용한 설계 - n-bit vector 내의 1의 개수를 출력하는 Numones procedureDream/전공과목 (전전) 2020. 9. 13. 02:41
1. Source code
주어진 과제는 n-bit vector 내의 1의 개수를 출력하는 Numones procedure를 procedure을 이용하여 완성하는 과제였다. 설계를 위해 procedure 내에 loop를 사용하여 I가 0부터 n-1의 범위일 때 입력된 신호 bit_vector가 1이면 그 값을 따로 카운팅을 하여 loop 종료 시에 그 값을 num에 입력시킴으로써 이를 출력하게 설계하였다.
2. Tesh Bench
Test bench에서 iee library와 std_logic_1164 및 numeric_std 패키지를 사용한다. 그 후 entity와 architecture을 먼저 선언한 후 component HW3_2을 통해 in_vector들과 out_vector들을 각각 선언한다. 그 다음 시그널들의 초기값을 설정해준 다음 port map을 통해 coponent와 signal들을 연결하고 in_vector 값에 문제에서 주어진 대로 다양한 값을 대입해줌으로써 Test bench 설계를 완성한다.
3. Wave form
4. 고찰
우선 첫 번째 과제는 function을 이용하여 n-bit vector의 2의 보수 형태를 주어진 하위 N비트 만큼 출력하는 프로그램을 설계하는 과제였다. 2의 보수는 원래의 주어진 값을 반전시킨 뒤 1을 더하면 완성이 된다. 하지만 이때 입력 신호가 bit_vector 타입이기 때문에 ‘+’operator를 사용할 수가 없다. 따라서 덧셈을 할 수 있는 2진 fulladder를 설계하고 for loop를 이용하여 반전된 값에 1을 더해줌으로써 이 문제를 해결할 수 있었다.
두 번째 과제는 n-bit vector 내의 1의 개수를 procedure를 사용하여 설계하는 과제였다. 설계를 위해 procedure 내에 loop를 이용하여 I가 0부터 n-1까지 입력된 신호가 1이면 그 값을 따로 카운팅 하여 최종 값을 출력하게 설계하였다. 이때 어찌된 영문인지 이 과제를 수행할 때 분명 코드가 잘못되거나 설계가 잘못된 것 같지는 않아 보였지만 이상하게 합성이 되지 않았다. 그래서 새 프로젝트로 만들어서 해보고 친구들에게도 물어봤으나 다들 이상한 점을 찾지 못하겠다고 해서 다른 컴퓨터로 해보니 이것이 해결되었다. 하지만 다시 봐도 코드나 또는 다른 변수가 없는 것으로 보여서 언제 기회가 된다면 이에 대해 조교님께 여쭤보고 싶다는 생각이 들었다.
'Dream > 전공과목 (전전)' 카테고리의 다른 글
[종합설계프로젝트] 공감각적 인지를 통한 시각장애인 감상 보조도구 (0) 2020.12.22 [디지털시스템] Tail Light 제어기 설계 (0) 2020.09.13 [디지털시스템] Function을 이용한 설계 - n-bit vector의 2의 보수 형태를 출력하는 코드 (0) 2020.09.13 [디지털시스템] Design synchronous sequence detector which detects “0101” or “0110” sequence (0) 2020.09.13 [디지털시스템] Design 16-to-1 Multiplexer with 4-to-1 Multiplexer (0) 2020.09.13