untuk TTL ke waktu keluaran RSDS HDL's coding

C

chensanlien

Guest
baru-baru ini, saya punya proyek tentang ttl mengirimkan sinyal ke sumber lcd driver (rsds sinyal).

Dalam proyek ini, kami memutuskan untuk menggunakan altera siklon (dengan rsds output I / O).

RSDS waktu adalah permintaan untuk mengirim data @ membesarkan (bahkan data bits)
@ Jatuh (tidak datar data bits) jam tepi,

jadi aku coding kode ini untuk spesifikasi ini, sebagai berikut:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

- MENYATAKAN ENTITY
ENTITY RSDS_Receiver IS
PORT (
CLOCK_IN: IN STD_LOGIC;
RESET_IN: IN STD_LOGIC;
RDATA_IN: IN STD_LOGIC_VECTOR (7 downto 0);
GDATA_IN: IN STD_LOGIC_VECTOR (7 downto 0);
BDATA_IN: IN STD_LOGIC_VECTOR (7 downto 0);

RRSDS_OUT: OUT STD_LOGIC_VECTOR (3 downto 0);
GRSDS_OUT: OUT STD_LOGIC_VECTOR (3 downto 0);
BRSDS_OUT: OUT STD_LOGIC_VECTOR (3 downto 0)
)
END RSDS_Receiver;

- ARCHITECTURE SECTION
ARSITEKTUR PERILAKU RSDS_Receiver IS

- MENDEFINISIKAN NEGARA MESIN
TYPE STATE_TYPE IS (RESET, ODD, BAHKAN);

- MENYATAKAN PRESENT & NEXT NEGARA SIGNAL
SIGNAL PRESENT_STATE, NEXT_STATE: STATE_TYPE;

BEGIN

- [1] Asynchronous RESET
RESET_REG: PROSES (CLOCK_IN, RESET_IN)
BEGIN
JIKA RESET_IN = '1 'THEN
PRESENT_STATE <= RESET;
ELSIF RISING_EDGE (CLOCK_IN) MAKA
PRESENT_STATE <= NEXT_STATE;
END IF;
END PROCESS;

- [2] NEGARA & DATA OUTPUT PROSES
PROSES (PRESENT_STATE, CLOCK_IN)
BEGIN
- SETUP DEFAULT OUTPUT
RRSDS_OUT <= "ZZZZ";
GRSDS_OUT <= "ZZZZ";
BRSDS_OUT <= "ZZZZ";
- SETUP DEFAULT NEXT_STATE
NEXT_STATE <= RESET;

- SWITCH NEGARA MESIN
CASE IS PRESENT_STATE
KETIKA RESET =>
RRSDS_OUT <= "ZZZZ";
GRSDS_OUT <= "ZZZZ";
BRSDS_OUT <= "ZZZZ";

NEXT_STATE <= SEKALIPUN;

KETIKA BAHKAN =>
JIKA CLOCK_IN = '1 'THEN
RRSDS_OUT (0) <= RDATA_IN (0);
RRSDS_OUT (1) <= RDATA_IN (2);
RRSDS_OUT (2) <= RDATA_IN (4);
RRSDS_OUT (3) <= RDATA_IN (6);

GRSDS_OUT (0) <= GDATA_IN (0);
GRSDS_OUT (1) <= GDATA_IN (2);
GRSDS_OUT (2) <= GDATA_IN (4);
GRSDS_OUT (3) <= GDATA_IN (6);

BRSDS_OUT (0) <= BDATA_IN (0);
BRSDS_OUT (1) <= BDATA_IN (2);
BRSDS_OUT (2) <= BDATA_IN (4);
BRSDS_OUT (3) <= BDATA_IN (6);
END IF;
NEXT_STATE <= ODD;

KETIKA ODD =>
JIKA CLOCK_IN = '1 'THEN
RRSDS_OUT (0) <= RDATA_IN (1);
RRSDS_OUT (1) <= RDATA_IN (3);
RRSDS_OUT (2) <= RDATA_IN (5);
RRSDS_OUT (3) <= RDATA_IN (7);

GRSDS_OUT (0) <= GDATA_IN (1);
GRSDS_OUT (1) <= GDATA_IN (3);
GRSDS_OUT (2) <= GDATA_IN (5);
GRSDS_OUT (3) <= GDATA_IN (7);

BRSDS_OUT (0) <= BDATA_IN (1);
BRSDS_OUT (1) <= BDATA_IN (3);
BRSDS_OUT (2) <= BDATA_IN (5);
BRSDS_OUT (3) <= BDATA_IN (7);
END IF;
NEXT_STATE <= SEKALIPUN;
END CASE;
END PROCESS;
END PERILAKU;Setelah sintesis & simulasi, kami mendapat hasil yang buruk (glitching).
Apakah ada orang yang dapat memecahkan masalah ini?

Hormat kami,

 
mencoba mengubah

JIKA CLOCK_IN = '1 'THEN

untuk jika clock_in'event dan clock_in = '1 '

dalam rangka untuk membuatnya sinkron dengan jam dan itu akan berubah setiap jam peroid

bukan lagi glitch

salam.

 

Welcome to EDABoard.com

Sponsor

Back
Top