배열/벡터 있고 첫 번째 처리하여 새 배열을 생성 할 싶습니다. 새로운 배열의 모든 i 번째 요소는 첫 번째 요소의 i-1, i 및 i + 1 요소의 합계입니다. 배열을 반복하여 순차적으로 쉽게 처리 할 수 있다는 것을 알고 있습니다. 나는 이것을 일반화하고 이것을 평행 한 연산으로 만드는 어떤 종류의 표현이라도 방황하고 있었다. (수학에서와 같이 : new [i] : = old [i-1] + old [i] + old [i + 1] , 여기서 i∈ (1, n)).vhdl 일반화 된 집합
1
A
답변
0
귀하의 질문은 병렬 처리에 관한 것이므로 시뮬레이션이 아닌 VHDL 설명에서 합성 할 하드웨어에 관심이 있다고 가정합니다.
병렬 처리는 이러한 모든 추가 작업이 수행 될 때 의 문제입니다.? 설계가 동기 인 경우 -의이 clk
라는 클럭의 상승 에지의 가정 해 봅시다 - 다음 :
subtype word: unsigned(7 downto 0);
type word_array is array(natural range <>) of word;
signal a: word_array(0 to 15);
signal b: word_array(1 to 14);
...
process(clk)
begin
if rising_edge(clk) then
for i in 1 to 14 loop
b(i) <= a(i - 1) + a(i) + a(i + 1);
end loop;
end if;
end process;
는 클럭의 각 상승 에지에서 배열 b
에 14 개 값을 병렬로 계산됩니다. 그리고이를 수행하는 데 필요한만큼 8 비트 덧셈기를 인스턴스화합니다. 문제는 여러분이 for
루프를 사용하고 있는지 또는 다른 것을 사용하고 있는지 여부가 아니라, 실제로 일 때 이러한 작업이 수행 될 때이 발생합니까? 답은 설명과 같습니다 : 동일한 시계 기간 동안 입니다.
function "+"(a, b: word_array) return word_array is
constant n: positive := a'length;
variable va: word_array(0 to n - 1) := a;
variable vb: word_array(0 to n - 1) := b;
variable sum: word_array(0 to n - 1);
begin
if n = 1 then
sum(0) := va(0) + vb(0);
else
sum := (va(0 to n/2 - 1) + vb(0 to n/2 - 1)) &
(va(n/2 to n - 1) + vb(n/2 to n - 1));
end if;
return sum;
end function "+";
을하고 그것에 분명히이 더 병렬 설명을 쓰기 사용 :
당신은 벡터에 작동하도록 "+"
연산자를 오버로드 할 수
process(clk)
begin
if rising_edge(clk) then
b <= a(0 to 13) + a(1 to 14) + a(2 to 15);
end if;
end process;
을하지만, 어떤 차이가 없을 것와 결과 하드웨어는 동일합니다. 다시, 신디사이저에 대한 차이가 없을 것,
g: for i in 1 to 14 generate
process(clk)
begin
if rising_edge(clk) then
b(i) <= a(i - 1) + a(i) + a(i + 1);
end if;
end process;
end generate g;
하지만 :
또한 동일한 기능을 수행하기 위해 생성 문을 사용할 수 있습니다.
관련 문제
- 1. VHDL 비트 집합
- 2. 일반화 된 XML 직렬화
- 3. 일반화 된 믹스
- 4. 일반화 된 역함수 R
- 5. 일반화 된 Android 활동
- 6. 일반화 된 Makefile 해석
- 7. 일반화 된 연결 목록
- 8. 일반화 된 스트림 파싱?
- 9. 행으로 일반화 된 집합체
- 10. 일반화 된 Newtype Deriving
- 11. 일반화 된 매개 변수
- 12. Mathematica의 일반화 된 고유치
- 13. WCF - 일반화 된 액션 문자열
- 14. 일반화 된 범용 함수 (numpy)
- 15. 일반화 된 유형 불이행 규칙
- 16. 일반화 된 getElementByID 만들기 javascript
- 17. 상속 된 클래스를 사용하여 일반화
- 18. C++ 일반화 된 연산자 템플릿
- 19. 일반화 된 Hough R 테이블
- 20. 더 일반화 된 expand.grid 함수?
- 21. avr __progmem__로 일반화 된 속성
- 22. NumPy와 : 일반화 된 고유치 문제
- 23. 일반화 XPaths
- 24. 일반화 된 클래스를 빌드하는 것이 아니라 일반화 된 클래스를 스택하는 것이 좋은 CSS 연습입니까?
- 25. Typedef 일반화
- 26. C++ 더 일반화 된 연산자 템플릿
- 27. 일반화 된 저장 및 읽기 작성
- 28. GSON을 일반화 된 형식으로 역 직렬화
- 29. 자바 일반화 된 초 기밀 함수
- 30. 일반화 된 람다 캡처 용 매크로
초기화 된 배열을 반환하는 함수를 작성하십시오. –
당신은 유한 요소 FPGA에서 1000 개 이상의 요소, 그 수 및 요소 크기 색상 구현을 다루려는 의도로 표현한 의견에 맞지 않을 수 있습니다. 너는 얼마나 많은 요소들과 그것들의 크기를 나타내지 않았고 그것은 너의 질문이 불분명하다는 것을 말해 준다. 완전한 매개 변수가없는 이론적 인 질문은 유용한 대답을 얻을 수 없습니다. 기능을 완료하기 위해 몇 가지 클럭에서 더 적은 리소스를 사용할 수있는 시간/복잡성이 상쇄 될 수 있습니다. – user1155120