-
andreika531427
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 5
-
Спасибо получено: 0
-
-
|
Не совсем, я бы хотел попросить помощи/советов, в построении схемы VGA контроллера в Quartus 2.
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
wowa
-
-
Не в сети
-
Давно я тут
-
-
Сообщений: 157
-
Спасибо получено: 37
-
-
-
-
|
Тогда Вам всётаки будет лучше заняться не схематическим вводом - а вплотную изучать VHDL или Verilog. Потому что схема быстро начнёт быть сложной и исправления будет сделать сложней чем всё перерисовать снова.
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
egor2013
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 1
-
Спасибо получено: 0
-
-
|
Ребят, есть вопрос, помогите. Мне нужно написать код на VHDL фазовой автоподстройки частоты. Вроде написал, но проверяя его в программе modelsim вижу, что сигналу outbuf не присваивается значение. Подскажите, где ошибка?
Код:
______________
Library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity diplom is
port (vhod: in std_logic;
rst: in std_logic;
IDCLK: in std_logic;
KCLK: in std_logic;
vyhod: out std_logic);
end diplom;
architecture behaviour of diplom is
signal carry, borrow, direction, idout: std_logic;
signal outbuf: std_logic;
begin
process(rst,vhod,outbuf)
begin
if rst='1' then
outbuf<='0';
end if;
end process;
direction<= vhod xor outbuf;
process(kclk,rst)
variable k:integer range 0 to 15;
begin
if rst='1' then
k:=0;
elsif kclk='1' and kclk'event then
if carry='1' then
carry<= '0';
end if;
if borrow='1' then
borrow<='0';
end if;
if direction='1' then
if k=15 then
k:=0;
carry<='1';
else
k:=k+1;
end if;
else
if k=0 then
k:=15;
borrow<='1';
else
k:=k-1;
end if;
end if;
end if;
end process;
process(idclk)
variable m: std_logic;
begin
if idclk='1' and idclk'event then
if carry='1' then
idout <= '1';
elsif borrow='1' then
idout <= '0';
elsif m='0' then
idout <= '1';
m :='1';
else
idout <= '0';
m := '0';
end if;
end if;
end process;
process(idout,rst)
variable k:integer range 0 to 127;
begin
if rst='1' then
k:=0;
elsif idout='1' and idout'event then
if k=127 then
k:=0;
outbuf<= not outbuf;
else
k:=k+1;
end if;
end if;
end process;
vyhod<= outbuf;
end behaviour;
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
nfader
-
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 37
-
Спасибо получено: 14
-
-
|
Первое, что приходит в голову, outbuf в двух разных process'ах. Да и вообще логика построения малопонятна... Так-то общий есть или все асинхронное друг относительно друга??
Переменная k у вас доже в двух процессах, как оно вообще работать должно???? Да и еще от двух разных тактов?!?! Железяка так не умеет....
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от nfader.
|
Время создания страницы: 0.085 секунд