1. 대충 보니까

8254를 써서 clock 을 원하는 주파수로 분주하는 fuction generator를 만드는듯



2. mode3 동작


- 프로젝트에서는 mode3를 사용해서 square wave를 생성하는데

데이터시트를 보니 mode3는 mode2와 비슷하게 rate generator 역할을 한다.

clock의 duty cycle만 다른듯?

(data sheet의 mode definition 참고할 것.)


- GATE는 무시하란다



- mode3 동작

divide-by-N counter 와 같이 동작

initial count의 반이 되면 OUT이 나오는듯?

위 그림에서 LSB가 initial count인 듯

(LSB 4, 5일때 2에서 count expired - 5일때는 2되고 1clock 지나서)


a) even counts

- initial count load(OUT은 initially high)

- 매 clock마다 값이 2씩 감소,

- count가 끝나면(initial count의 반) OUT이 바뀜(toggle)

- 다시 initial count reloaded

- 반복


b) odd counts

- initial count load N-1(even), (OUT은 initially high)

- 매 clock마다 count 2씩 감소

- count가 끝나고 한 clock 있다가 OUT이 LOW로 됨

- 다시 initial count reloaded

- 매 clock마다 count 2씩 감소

- count 끝나면 바로 OUT이 HIGH로 됨

- 다시 reloaded

- 반복


----------2014_11_1_SAT-----------



3. 8254

아하하하하ㅏㅇ항하앟ㅇ하

8254 코드는 주어진단다 하하하ㅏ 시발

나는 CONTROL SIGNAL GENERATOR를 통해서 8254에 쓰이는

control signal만 만들면 된단다


4. PCFG TOP 파일도 주어진다. 

그냥 뭐 별거는 없고 input, output만 정의해놓은 거임

여기다가는 각 component의 proto type과, 

각 component들에 사용할 signal들을 정의해주면 된다.


5. Address Decoder

PC로부터 9bits address를 입력받게 된다.

address decoder에서 그 주소를 입력받은 후, 

각 component에 해당하는 address를 입력받았을 때, 그 component를 사용할 수 있도록

1 bit signal을 내보내주면 된다. 이 signal이 CS역할을 하는 것 같다


simulation 결과,

input address에 따라서 각 output signal들이 잘 나오는듯

clk은 필요없는거 같다.




6. Data Bus Buffer

PC로부터 데이터를 입력받을때, PC로 데이터를 보낼때 같은 BUS를 이용하므로

tri buffer를 이용한 control이 필요하다

enable은 active low로 동작하며

enable이 0이면 latch에서 나온 데이터가 PC로 들어가고,

1이 되면 Hi-Z로 만들어서, PC에서 또 다른 latch나 8254로 데이터를 보낼 수 있도록 한다.

- 지금 top에서 signal 연결을 제대로 안했는데, latch의 output을 buffer의 input으로 연결해줘야함



흠 근데 각 component 말고 top에서 시뮬해봐야 할텐데, TOP simul할 때 어떻게 component들의

signal을 보는지 잘몰겠당...



7. LATCH

data를 입력받을 때나 출력할 떄, clock과의 동기화를 위해 latch를 거친다

(enable 있고, clock이 1일 때만 입력이 출력으로 전달된다, edge triggered 가 아닌 level sensitve로 동작, 

clock low이면 이전 값이 그대로 유지됨)

PC로부터 data 입력, PC로 data 출력, ADC로부터 data 입력, DAC로 data 출력

총 네개의 latch가 사용되며, 모두 같은 clock과 reset을 갖지만

input data, output data, enable은 모두 따로따로임

모든 enable 신호는 모두 control signal generator에서 만들어 보내준다.





8. internal / primary signal

 

   -- signal

    -- 각 component들의 output signal만을 internal signal로 정의해준다, input은 할 필요없다.

    -- ex) latch의 enable은 internal signal로 선언해줄 필요 없고,

    --     control signal generator에서 나오기 때문에 여기서 나온 output을 internal signal로 선언해준 후

    --     latch의 input에 연결만 해주면 된다

    -- 선언해준 internal output signal 들은 사용되는 component들의 primary input으로 연결해준다


9. with - select

with s select y <= d0 when s = '1',
d1 when s = '0';
"00" when others;
 
이거를 쓰려면 마지막에 others가 꼭 필요하다



10. MUX_2_TO_1

RAM0로 들어가는 mux, DAC와 PC로 나가는 mux 두개가 있다

설명서에는 각각 input, output mux라는데 그게 그거 아닌가...

input mux는 PC 데이터와 ADC 데이터로부터 선택, output mux는 RAM0와 RAM1 으로부터 선택

암튼 테스트 결과 이상 없음




11. MUX_3_TO_1

input이 3개다, input 3개이므로 select signal은 2bit, control signal generator에서 잘 맞춰야한다

filter에서 들어오는거, RAM0에서 들어오는거, input MUX에서 들어오는거

이 중에서 select해서 output은 RAM1로 들어간다




12. DUAL_PORT_RAM

RAM0, RAM1

simulation은 아직 못해봄



13. ERRORERROR



모듈을 선언해놓고, architecture에 아무것도 없으면 위와 같은 error가 뜨게 된다

아무 쓰잘데기 없는 명령이라도 하나 집어넣으면 에러 안뜸


-----------2014_11_ 9_SUN-------------------


14. 8254

8254 클락나옴!!

테스트벤치에서 어드레스랑 wen, ren등 다른 signal은 잘나오는데 이상하게 data가 자꾸 안나온다 했더니

버퍼를 통해서 8254에 넣어주니 데이터가 잘들어온다



위와 같이 어드레스, 데이터 wen등 나온다 control register에 한번, counter에 두번 데이터를 쓰고 나면

8254에서 시스템 clock이 8분주된 clock이 나오게 된다. 

주의할점은, 어드레스가 나오자마자 데이터를 바로 쓰는게 아니라, 

어드레스와 cmd_data가 나온 후에, controller에서 ready signal을 띄워주면

그제서야 wen과 data가 나오게 된다, 그 전까지는 data가 high-z 로 되어있는 것을 볼 수 있다



8254 세팅을 안해도 처음에 느린 clock이 나오다가 세팅하는 과정에서 이상한 모냥이 잠깐 나오고


세번의 데이터를 쓰는 세팅 과정이 끝나면 위와 같이 8분주된 clock이 나오게 된다


테스트벤치에서는 ready신호를 controller에서 받아야 어드레스와 데이터를 보내준다.

일단은 걍 가라로 뜨게 해줌

스테이트를 통해서 ready 신호가 나오게 해줘야한다



15. address counter

ram0에 여러번 따로따로 쓰더라도

카운트는 계속 마냥 증가? 리셋 들어오기 전까지는?




'VHDL' 카테고리의 다른 글

multi-driver error  (0) 2014.12.03
디논실 project woring notes  (0) 2014.10.31
기본 component  (0) 2014.10.30
8254 datasheet  (0) 2014.10.27
Blocking and Nonblocking statements  (0) 2014.10.09
Posted by bogus919
,