如何控制2个不同的时钟?我写了clk1Hz<=newclock or newclock2;
所以我可以通过选择其中一个来控制它是&#39; 1&#39;。但是,它在该句子中给出了意外的标识符错误(clk1Hz&lt; = newclock或newclock2;)。我不知道为什么我会有这样的错误。
entity Top_module is
port( clk : in std_logic;
input: in std_logic_vector(2 downto 0);
reset: in std_logic;
output: out std_logic_vector(7 downto 0)
);
end Top_module;
架构Top_module的行为是
component Clockdivider
port( clock : in std_logic;
newclock : out std_logic;--for 1/4sec
newclock2: out std_logic--for 1/20 sec
);
end component;
signal state :std_logic_vector(3 downto 0):= "0000";
signal clk1Hz : std_logic;
clk1Hz<=newclock or newclock2;
begin
comp1: Clockdivider port map(clk, clk1Hz);
process(clk1Hz,reset)
begin
if(rising_edge(clk1Hz)) then
if newclock='1' then --this is for 1/4 sec option
...
elsif newclock2='1' then
...
答案 0 :(得分:0)
您对clockdivider端口的映射与其声明不对应。它有一个输入和两个输出。端口映射应如下所示:
signal newclock : std_logic;
signal newclock2 : std_logic;
.......
comp1: Clockdivider port map(clk, newclock, newclock2);
答案 1 :(得分:0)
您的clk1Hz信号在架构头内分配 - &gt;开始后移动它(建筑体)。
但是你的设计存在更严重的问题:
您使用的是哪个测试平台?
ASIC / FPGA,Xilinx / Altera / ...,Spartan / Virtex /.../ Cyclon / Stratix / ......?
例如:如果您使用的是Xilinx FPGA器件,则应使用BUFGCTRL
来切换两个时钟信号。这是一种非常先进的技术,因此我建议您检查您的设计并使用没有时钟多路复用的解决方案:)