Vhdl 分频器和信号的后续边缘检测
我对VHDL编程非常陌生,在实现分频器和检测信号边缘时遇到问题。该代码由6个按钮输入组成,每个按钮输入将在1KHz下从50MHz输出脉冲 我正在试验的问题如图所示:我在每个输入变量中得到U。我在网上搜索了多个分频器,但到目前为止没有成功。此外,我还了解到将代码上传到fpga的特定方式的实现,以及在xilinx中进行模拟的另一种方式Vhdl 分频器和信号的后续边缘检测,vhdl,xilinx-ise,Vhdl,Xilinx Ise,我对VHDL编程非常陌生,在实现分频器和检测信号边缘时遇到问题。该代码由6个按钮输入组成,每个按钮输入将在1KHz下从50MHz输出脉冲 我正在试验的问题如图所示:我在每个输入变量中得到U。我在网上搜索了多个分频器,但到目前为止没有成功。此外,我还了解到将代码上传到fpga的特定方式的实现,以及在xilinx中进行模拟的另一种方式 use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; use ieee.std_logic_unsigned.
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
use ieee.std_logic_unsigned.all;
entity armmov is
port(
CLK_50MHz: in std_logic;
rst : in std_logic;
BTN1 : in std_logic;
BTN2 : in std_logic;
BTN3 : in std_logic;
BTN4 : in std_logic;
BTN5 : in std_logic;
BTN6 : in std_logic;
PUL1 : out std_logic;
PUL2 : out std_logic;
PUL3 : out std_logic;
PUL4 : out std_logic;
PUL5 : out std_logic;
PUL6 : out std_logic
);
end armmov;
architecture Behavioral of armmov is
signal Counter : integer := 1;
signal CLK_1KHz: std_logic := '0';
begin
process (CLK_50MHz,rst)
begin
if (rst = '1') then
Counter <= 1;
CLK_1KHz <= '0';
elsif(CLK_50MHz'event and CLK_50MHz='1') then
Counter <= Counter + 1;
if (Counter = 25000) then
CLK_1KHz <= NOT CLK_1KHz;
Counter <= 1;
end if;
end if;
end process;
process(CLK_1KHz)
begin
if BTN1='1' then
PUL1<=CLK_1KHz;
else
PUL1 <='0';
end if;
if BTN2='1' then
PUL2<=CLK_1KHz;
else
PUL2 <='0';
end if;
if BTN3='1' then
PUL3<=CLK_1KHz;
else
PUL3 <='0';
end if;
if BTN4='1' then
PUL4<=CLK_1KHz;
else
PUL4 <='0';
end if;
if BTN1='1' then
PUL1<=CLK_1KHz;
else
PUL1<='0';
end if;
if BTN2='1' then
PUL2<=CLK_1KHz;
else
PUL2<='0';
end if;
if BTN3='1' then
PUL3<=CLK_1KHz;
else
PUL3<='0';
end if;
if BTN4='1' then
PUL4<=CLK_1KHz;
else
PUL4<='0';
end if;
if BTN5='1' then
PUL5<=CLK_1KHz;
else
PUL5<='0';
end if;
if BTN6='1' then
PUL6<=CLK_1KHz;
else
PUL6<='0';
end if;
end process;
end Behavioral;
使用IEEE.STD_LOGIC_1164.ALL;
使用IEEE.NUMERIC_STD.ALL;
使用ieee.std_logic_unsigned.all;
实体armmov是
港口(
时钟50MHz:标准逻辑中;
rst:标准逻辑中;
BTN1:标准逻辑中;
BTN2:标准逻辑中;
BTN3:标准逻辑中;
BTN4:标准逻辑中;
BTN5:标准逻辑中;
BTN6:标准逻辑中;
PUL1:输出标准逻辑;
PUL2:输出标准逻辑;
PUL3:输出标准逻辑;
PUL4:输出标准逻辑;
PUL5:输出标准逻辑;
PUL6:输出标准逻辑
);
结束阿姆莫夫;
armmov的体系结构是
信号计数器:整数:=1;
信号时钟1KHz:标准时钟逻辑:='0';
开始
过程(时钟50MHz,rst)
开始
如果(rst='1'),则
计数器输入值为“U”,因为这些信号未被驱动。您可以通过两种方法驱动这些信号
从模拟GUI强制时钟和常数李>
编写用于驱动这些值的测试台
PS:不要使用ieee.std_logic_unsigned和类似的库,因为它们没有标准化。相反,请使用ieee.numeric\u std.all
一些学习VHDL的有用网站:
输入值为“U”,因为这些信号未被驱动。您可以通过两种方法驱动这些信号
从模拟GUI强制时钟和常数李>
编写用于驱动这些值的测试台
PS:不要使用ieee.std_logic_unsigned和类似的库,因为它们没有标准化。相反,请使用ieee.numeric\u std.all
一些学习VHDL的有用网站:
ieee库;
使用ieee.std_logic_1164.all;
使用ieee.numeric_std.all;
实体armmov是
港口
(
时钟50mhz:标准逻辑中;
复位:在标准逻辑中;
btn1:标准逻辑中;
btn2:标准逻辑中;
btn3:标准逻辑中;
btn4:标准逻辑中;
btn5:标准逻辑中;
btn6:标准逻辑中;
pul1:输出标准逻辑;
pul2:输出标准逻辑;
pul3:输出标准逻辑;
pul4:输出标准逻辑;
pul5:输出标准逻辑;
pul6:输出标准逻辑
);
结束阿姆莫夫;
armmov的体系结构是
信号计数器:自然:=0;
信号时钟1khz:标准时钟逻辑:='0';
开始
过程(时钟50mhz,复位)
开始
如果重置,则
计数器<代码>库ieee;
使用ieee.std_logic_1164.all;
使用ieee.numeric_std.all;
实体armmov是
港口
(
时钟50mhz:标准逻辑中;
复位:在标准逻辑中;
btn1:标准逻辑中;
btn2:标准逻辑中;
btn3:标准逻辑中;
btn4:标准逻辑中;
btn5:标准逻辑中;
btn6:标准逻辑中;
pul1:输出标准逻辑;
pul2:输出标准逻辑;
pul3:输出标准逻辑;
pul4:输出标准逻辑;
pul5:输出标准逻辑;
pul6:输出标准逻辑
);
结束阿姆莫夫;
armmov的体系结构是
信号计数器:自然:=0;
信号时钟1khz:标准时钟逻辑:='0';
开始
过程(时钟50mhz,复位)
开始
如果重置,则
柜台