설계"프로그램

A

alphi

Guest
내 프로젝트 프로그램 싱크로 나누기와 8 비트 카운터 싱크로 필요합니다.OPT = 00 때 1, CLK, 카운터를 1 증가OPT 때 = 01, 2 CLK, 카운터를 1 증가OPT = 10 일 때, 4 CLK, 카운터를 1 증가OPT = 11 일 때, 8 CLK 상승, 카운터 1
참고 : 나는 CLK 주파수 회로를 나눌 멀티플렉서 회로 clk2 나눈 다음 8 비트 싱크로 counter.because 이들을위한 프로젝트 CLK.my T1 (카운터 출력) - T2는 큰 지연 시간 betwwen 카운터 출력을 생성하는 것입니다 clk2를 사용하여 생성하는 데 사용할 수없습니다 ( CLK) "8ns, 그래서 다음과 같은 방법을 사용 VHDL.but 내 XC9536XL 매우 큰 자원 - 10을 소모합니다.왜 그렇게 많은 자원을 소모? 어떻게 그것을 향상시킬 수있습니다.내 VHDL :

엔티티 바보
포트 (
CLK : std_logic에;
: std_logic_vector (7 downto 0 아웃);
OPT : std_logic_vector (1 downto 0);
nRST : std_logic에서 -
);
똥 끝;

건축 행동 똥이다
A_SIG 신호 : std_logic_vector (10 downto 0); -
시작
ACOUNT : 블록
시작
"= A_SIG (10 downto 3);
프로세스 (CLK, nRST)
시작
만약 nRST = '1 '를 클릭한 후 -
만약 CLK = '1 '을 입력한 다음 CLK'event
사건을 거부 기능
언제 "00"= "
A_SIG (10 downto 3) "= A_SIG (10 downto 3) 1;
언제 "01"= "
A_SIG (10 downto 2) "= A_SIG (10 downto 2) 1;
때 "10"= "
A_SIG (10 downto 1) "= A_SIG (10 downto 1) 1;
때 "11"= "
A_SIG (10 downto 0) "= A_SIG (10 downto 0) 1;
사람이있을 땐 = "
널;
결국 사건;
최종면;
그 밖의
A_SIG "="00000000000 ";
최종면;
최종 처리;
엔드 블록 ACOUNT;
마지막 행동;HDL을 합성 신고매크로 통계
# Adders / Subtractors : 4
11 비트 adder : 1
10 비트 adder : 1
9 비트 adder : 1
8 비트 adder : 1
# 레지스터 : 11
1 비트 등록 : 11
# 멀티플렉서 : 10
2 - 1 멀티플렉서 : 1
1 비트 4 - 1 멀티플렉서 : 9

 
나는 명확하게 이해할 수없는 문장과 우려에 대해 ""큰 지연 시간을 생성합니다.

아주 잘하지만, 귀하의 코드를 어색하게 보인다 VHDL 모르겠어요.아마이 Verilog 예제 도움이됩니다 :
코드 :

모듈 가기 (CLK,, 가입 거부, nRST);

입력 CLK, nRST;

입력 [1시] OPT;

] 셀 [10시 reg;

출력 [7시];= 개수를 지정 ""3;(posedge CLK 또는 negedge nRST)은 항상 @ 시작

(nRST == 0)

카운트 "= 0;

그 밖의

카운트 "= 계산 (8" "OPT);



endmodule
 
이것 좀 봐!

코드 :

엔티티 바보

포트 (

CLK : std_logic에;

: std_logic_vector (7 downto 0 아웃);

OPT : std_logic_vector (1 downto 0);

nRST : std_logic에서 -

);

똥 끝;건축 행동 똥이다

A_SIG 신호 : std_logic_vector (10 downto 0); -

변수 tmp에 : std_logic_vector (10 downto 0);

시작

ACOUNT : 블록

시작

"= A_SIG (10 downto 3);

프로세스 (CLK, nRST)

시작

만약 nRST = '0 '를 클릭한 후

A_SIG "="00000000000 "; -

elsif CLK = '1 '을 입력한 다음 CLK'event

사건을 거부 기능

언제 "00"= "tmp에 : = 8;

언제 "01"= "tmp에 : = 4;

때 "10"= "tmp에 : = 2;

때 "11"= "tmp에 : = 1;

사람이있을 땐 = "null이;

결국 사건;

A_SIG (10 downto 0) "= A_SIG (10 downto 0) tmp를;

최종면;

최종 처리;

엔드 블록 ACOUNT;

마지막 행동;

 

Welcome to EDABoard.com

Sponsor

Back
Top