首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VHDL中用开关控制不同的时钟

在VHDL中用开关控制不同的时钟
EN

Stack Overflow用户
提问于 2014-12-16 04:52:24
回答 2查看 623关注 0票数 0

如何控制两个不同的时钟?我写了这个clk1Hz<=newclock or newclock2;,所以我可以通过选择其中一个是'1‘来控制它。然而,它在句子(clk1Hz<=newclock或newclock2;)中给出了意外的标识符错误。我不知道为什么我会有这样的错误。

代码语言:javascript
复制
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的架构行为是

代码语言:javascript
复制
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
        ...
EN

回答 2

Stack Overflow用户

发布于 2014-12-16 05:24:59

您的clockdivider端口映射与其声明不符。它有一个输入和两个输出。端口映射应该是这样的:

代码语言:javascript
复制
signal newclock : std_logic;
signal newclock2 : std_logic; 
.......
comp1: Clockdivider port map(clk, newclock, newclock2);
票数 0
EN

Stack Overflow用户

发布于 2014-12-16 06:07:09

您的clk1Hz信号被分配到架构头中,并在begin (架构主体)之后移动它。

但是你的设计有更严重的问题:

一个或门不是一个选择电路,那将是一个multiplexer.

  • But,你不能用正常的逻辑多路复用两个时钟信号。

您使用的是哪种测试平台?

ASIC/FPGA,Xilinx/Altera/...,Spartan/Virtex/.../Cyclon/Stratix/...?

例如:如果您使用的是Xilinx FPGA设备,那么您应该使用BUFGCTRL来切换两个时钟信号。这是一种非常先进的技术,因此我建议审查您的设计,并使用没有时钟多路复用的解决方案:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27492918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档