با سلام
به یه مشکل در ارتباط میکرو و cpld برخوردم که از این قراره:
خیلی ساده با avr که تغذیه اش 5 ولته 50 تا پالس به cpld که تغذیه اش 3.3 ولته میدم و تعداد پالسای دریافتی رو روی خروجی cpld میفرستم و توقع دارم که همون 50 تا باشه ولی اعداد متفاوتی میاد آیا مساله به pullup های داخلی cpld مربوط میشه یا چیز دیگه ؟ لطفا راهنمایی کنید.(cpld مورد استفاده xc95144xl هستش) ورودی خروجی هایی که ملاحظه میکنید برای برنامه اصلی است که یه ورودی و یه خروجی 8 بیتی اون تو این تست استفاده شده.اینم برنامه:
به یه مشکل در ارتباط میکرو و cpld برخوردم که از این قراره:
خیلی ساده با avr که تغذیه اش 5 ولته 50 تا پالس به cpld که تغذیه اش 3.3 ولته میدم و تعداد پالسای دریافتی رو روی خروجی cpld میفرستم و توقع دارم که همون 50 تا باشه ولی اعداد متفاوتی میاد آیا مساله به pullup های داخلی cpld مربوط میشه یا چیز دیگه ؟ لطفا راهنمایی کنید.(cpld مورد استفاده xc95144xl هستش) ورودی خروجی هایی که ملاحظه میکنید برای برنامه اصلی است که یه ورودی و یه خروجی 8 بیتی اون تو این تست استفاده شده.اینم برنامه:
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 fm is
Port ( clk_enable : in STD_LOGIC;
clk : in STD_LOGIC;
micro_wave : in STD_LOGIC;
data_clock : in STD_LOGIC;
int : out STD_LOGIC;
data : out STD_LOGIC_VECTOR (7 downto 0));
end fm;
architecture Behavioral of fm is
signal twomega_clk_counter:std_logic_vector(23 downto 0):=x"000000"; --should be initialized for counting to be correct
signal counters_enable:bit:='0';
signal data_index:integer range 0 to 25:=0;
signal int_sig:std_logic:='0';
---------------------------------for test
--signal divider:std_logic_vector(24 downto 0):="0000000000000000000000000";
signal clk_enable_count:std_logic_vector(7 downto 0):="00000000";
-----------------------------------------
begin
clk_enable_process:process(clk_enable)
begin
if (clk_enable='1' and clk_enable'event) then
clk_enable_count<=clk_enable_count+1;
end if;
end process clk_enable_process;
data<=clk_enable_count;
-------------------------------------------------------
end Behavioral;
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 fm is
Port ( clk_enable : in STD_LOGIC;
clk : in STD_LOGIC;
micro_wave : in STD_LOGIC;
data_clock : in STD_LOGIC;
int : out STD_LOGIC;
data : out STD_LOGIC_VECTOR (7 downto 0));
end fm;
architecture Behavioral of fm is
signal twomega_clk_counter:std_logic_vector(23 downto 0):=x"000000"; --should be initialized for counting to be correct
signal counters_enable:bit:='0';
signal data_index:integer range 0 to 25:=0;
signal int_sig:std_logic:='0';
---------------------------------for test
--signal divider:std_logic_vector(24 downto 0):="0000000000000000000000000";
signal clk_enable_count:std_logic_vector(7 downto 0):="00000000";
-----------------------------------------
begin
clk_enable_process:process(clk_enable)
begin
if (clk_enable='1' and clk_enable'event) then
clk_enable_count<=clk_enable_count+1;
end if;
end process clk_enable_process;
data<=clk_enable_count;
-------------------------------------------------------
end Behavioral;
دیدگاه