Перейти к содержанию
    

VHDL против СХЕМАТИКИ

На этом кристалле я думаю единственное, что вам доступно - это деление на 2частоты на обычных счетчиках. Если Вам нужно разные сетки частот, то нужно поставить внешние например 100 МГц кварц и тот же 80 МГц. От них делением и выбором можно получить мксек:

за идею спасибо :beer:

 

А вот от разных генераторов можно попробовать, сейчас прикину.

давайте вернёмся к этому вопросу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну вот , все куда-то убежали, а я уже научился делать свои символы и переносить их в проект.Только он пустой.Научите меня заполнять его кодом на VHDL ну хотябы для простоты понимания двумя двоичными счётчиками. :beer:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Код делителя:

signal cnt : std_logic_vector(7 downto 0);

cnt : process (clk80)
begin
   if (clk80=1 and clk80'event) then
       cnt <= cnt+1;
   end if;
end process;

out1 <= cnt(0);
out2 <= cnt(1);
out3 <= cnt(2);
...
out8 <= cnt(7);

 

А как добавлять VHDL к схемотехническому проекту, на сколько я помню, я Вам пошагово отписывал. Так что обратитесь к истории.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за код.Вы мне описывали как его встраивать, это я усвоил.А как заполнять не научили

А , вот нашёл.

Это оно так должно выглядеть ?

----------------------------------------------------------------------------------
-- Company: 
-- Engineer: 
-- 
-- Create Date:    17:55:55 05/04/2008 
-- Design Name: 
-- Module Name:    counter - Behavioral 
-- Project Name: 
-- Target Devices: 
-- Tool versions: 
-- Description: 
--
-- Dependencies: 
--
-- Revision: 
-- Revision 0.01 - File Created
-- Additional Comments: 
--
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity counter is
    Port ( IN80 : in  STD_LOGIC;
           IN100 : in  STD_LOGIC;
           OUT1 : out  STD_LOGIC;
           OUT2 : out  STD_LOGIC;
           OUT3 : out  STD_LOGIC;
           OUT4 : out  STD_LOGIC;
           OUT5 : out  STD_LOGIC;
           OUT6 : out  STD_LOGIC;
           OUT7 : out  STD_LOGIC;
           OUT8 : out  STD_LOGIC);
end counter;

architecture Behavioral of counter is

signal cnt : std_logic_vector(7 downto 0);

cnt : process (clk80)
begin
   if (clk80=1 and clk80'event) then
       cnt <= cnt+1;
   end if;
end process;

out1 <= cnt(0);
out2 <= cnt(1);
out3 <= cnt(2);
out4 <= cnt(3);
out5 <= cnt(4);
out6 <= cnt(5);
out7 <= cnt(6);
out8 <= cnt(7);
end Behavioral;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

на эту строку

cnt : process (clk80)

пишет Line 46. parse error, unexpected IDENTIFIER :help:

я её закрываю , а он на эту строчку

if (clk80=1 and clk80'event) then

пишет Line 50. parse error, unexpected IF

я её закрываю, а он на эту строчку

end if;
пишет Line 52. parse error, unexpected IF, expecting SEMICOLON

я и её закрываю, а он на эту строчку

end process;
а он пишет

Line 53. parse error, unexpected PROCESS, expecting SEMICOLON

а если и её закрыть, то все ошибки исчезают, но работать наверное не будет, щас проверю

точно, не работает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

должно быть два бегина?

 

ERROR:HDLParsers:3312 - "F:/Projekte/XilinxProjekte/SCOP_SPECTR/OSZILLOGRAF/counter.vhd" Line 47. Undefined symbol 'clk80'.

ERROR:HDLParsers:1209 - "F:/Projekte/XilinxProjekte/SCOP_SPECTR/OSZILLOGRAF/counter.vhd" Line 47. clk80: Undefined symbol (last report in this block)

ERROR:HDLParsers:808 - "F:/Projekte/XilinxProjekte/SCOP_SPECTR/OSZILLOGRAF/counter.vhd" Line 51. = can not have such operands in this context.

ERROR:HDLParsers:1202 - "F:/Projekte/XilinxProjekte/SCOP_SPECTR/OSZILLOGRAF/counter.vhd" Line 54. Redeclaration of symbol cnt.

WARNING:HDLParsers:1406 - "F:/Projekte/XilinxProjekte/SCOP_SPECTR/OSZILLOGRAF/counter.vhd" Line 47. No sensitivity list and no wait in the process

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Знаете, если просто читать лог ошибок и предупреждений, можно многое понять самостоятельно... а не постить каждую ошибку на форуме. Да и книги по вхдлу не отменяли.

В данном случае в схеме у Вас нет ни сигнала, ни порта clk80, а Вы описываете процесс с его участием, вот и получается ошибка. Замените clk80 на IN80, например, т.к. IN80 у Вас есть в портах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

знаете, я догадался заменить, то , о чём вы пишете и получил вот это

F:/Projekte/XilinxProjekte/SCOP_SPECTR/OSZILLOGRAF/counter.vhd" Line 53. = can not have such operands in this context.

ERROR:HDLParsers:1202 - "F:/Projekte/XilinxProjekte/SCOP_SPECTR/OSZILLOGRAF/counter.vhd" Line 56. Redeclaration of symbol cnt.

и книжку по теме нашёл, автор П.Н.Бибило, уже как часа три читаю, не хотите не помагйте, вас сюда никто не тащил насильно. До свидания :beer:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

cnt : process (clk80)

begin

if (clk80=1 and clk80'event) then

cnt <= cnt+1;

end if;

end process;

чего шумите?

Попробуй так:

process (IN80 )
begin
   if (IN80'event and IN80 ='1') then
       cnt <= cnt+'1';
   end if;
end process;

Внимательнее прочитай разделы о переменных. К сигналу пишется '1', для вектора "111", просто 1 для integer и т.д.

Изменено пользователем Omen_13

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот спасибо мил человек :a14: всё и заработало

 

entity counter is
    Port ( IN80 : in  STD_LOGIC;
           IN100 : in STD_LOGIC;
           OUT1 : out STD_LOGIC;
           OUT2 : out STD_LOGIC;
           OUT3 : out STD_LOGIC;
           OUT4 : out STD_LOGIC;
           OUT5 : out STD_LOGIC;
           OUT6 : out STD_LOGIC;
           OUT7 : out STD_LOGIC;
           OUT8 : out STD_LOGIC);
end counter;

architecture Behavioral of counter is

signal counter : std_logic_vector(7 downto 0);

begin

process (IN80 )
begin
if (IN80 ='1' and IN80 'event) then
counter <= counter+'1';
end if;
end process;
    
out1 <= counter(0);
out2 <= counter(1);
out3 <= counter(2);
out4 <= counter(3);
out5 <= counter(4);
out6 <= counter(5);
out7 <= counter(6);
out8 <= counter(7); 
end Behavioral;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

всё тот же ХС9572 РС44
Можно попробовать сделать DSS, ресурсов должно хватить, но может не хватить быстродействия :(

 

(Verilog, 8ми разрядный DSS,минимальный коэфициент деления - 2)

 

  

module DSS(input clk, input [6:0] freq, output f_out);

reg [7:0] cnt = 8'b0;

always @(posedge clk)

cnt <= cnt + {1'b0,freq};

assign f_out = cnt[7];

endmodule

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...