如何控制两个不同的时钟?我写了这个clk1Hz<=newclock or newclock2;,所以我可以通过选择其中一个是'1‘来控制它。然而,它在句子(clk1Hz<=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
...发布于 2014-12-16 05:24:59
您的clockdivider端口映射与其声明不符。它有一个输入和两个输出。端口映射应该是这样的:
signal newclock : std_logic;
signal newclock2 : std_logic;
.......
comp1: Clockdivider port map(clk, newclock, newclock2);发布于 2014-12-16 06:07:09
您的clk1Hz信号被分配到架构头中,并在begin (架构主体)之后移动它。
但是你的设计有更严重的问题:
一个或门不是一个选择电路,那将是一个multiplexer.
您使用的是哪种测试平台?
ASIC/FPGA,Xilinx/Altera/...,Spartan/Virtex/.../Cyclon/Stratix/...?
例如:如果您使用的是Xilinx FPGA设备,那么您应该使用BUFGCTRL来切换两个时钟信号。这是一种非常先进的技术,因此我建议审查您的设计,并使用没有时钟多路复用的解决方案:)
https://stackoverflow.com/questions/27492918
复制相似问题