【问题标题】:VHDL Counter circuit errorVHDL 计数器电路错误
【发布时间】:2015-04-10 04:40:39
【问题描述】:

作为一个小组项目的一部分,我将为一个电路构建一个计数器电路,该电路以 ASCII 码提供每个小组成员名字的有效负载。我的任务是为电路的接收端构建一个计数器电路。我正在使用 D 型人字拖来做到这一点。我正在构建的整个电路是 19 个 8 位分支,带有一个进位。这是我的D型触发器代码,8位分支,然后是整个电路。

D型人字拖

library IEEE;
use IEEE.std_logic_1164.all;

entity DFF1 is port (
    d1,clk1,reset1,set1 : in STD_LOGIC;
    q1 : out STD_LOGIC);
end DFF1;

architecture DFF1 of DFF1 is
begin
    process(clk1,reset1,set1)
    begin
        if reset1='1' then
            q1 <= '0';
        elsif set1='1' then
            q1 <= '1';
        elsif clk1'event and clk1='1' then
            q1 <= d1;
        end if;
    end process;
end DFF1;

8 位计数器

library IEEE;
use IEEE.std_logic_1164.all;

Entity counter is port (
    d, clk, set,  : in std_logic;
    reset, q : out std_logic);
end entity counter;

architecture ARCH1 of counter is
    component DFF1
        port(d1, clk1, reset1, set1 : in std_logic;
             q1 : out std_logic);
    end component;

    signal qd1, qd2, qd3, qd4, qd5, qd6, qd7, sr1, sr2, sr3, sr4, sr5, sr6, sr7 : std_logic;

begin

    DFF11: DFF1 port map (d1=>d,   clk1=>clk, set1=>set, q1=>qd1, reset1=>sr1);
    DFF12: DFF1 port map (d1=>qd1, clk1=>clk, set1=>sr1, q1=>qd2, reset1=>sr2);
    DFF13: DFF1 port map (d1=>qd2, clk1=>clk, set1=>sr2, q1=>qd3, reset1=>sr3);
    DFF14: DFF1 port map (d1=>qd3, clk1=>clk, set1=>sr3, q1=>qd4, reset1=>sr4);
    DFF15: DFF1 port map (d1=>qd4, clk1=>clk, set1=>sr4, q1=>qd5, reset1=>sr5);
    DFF16: DFF1 port map (d1=>qd5, clk1=>clk, set1=>sr5, q1=>qd6, reset1=>sr6);
    DFF17: DFF1 port map (d1=>qd6, clk1=>clk, set1=>sr6, q1=>qd7, reset1=>sr7);
    DFF18: DFF1 port map (d1=>qd7, clk1=>clk, set1=>sr7, q1=>q,   reset1=>reset);

end ARCH1;

完整的计数器

library IEEE;
use IEEE.std_logic_1164.all;

Entity complete_counter is port (
    clk0, set0, d0  : in std_logic;
    q1, q2, q3, q4, q5, q6, q7, q8, q9, q10, q11, q12, q13, q14, q15, q16, q17, q18, q19, q20, reset  : out std_logic);
end entity complete_counter;

architecture ARCH2 of complete_counter is
    component counter
        port (d, clk, set  : in std_logic;
        reset, q : out std_logic);
    end component;

    signal sr1, sr2, sr3, sr4, sr5, sr6, sr7, sr8, sr9, sr10, sr11, sr12, sr13, sr14, sr15, sr16, sr17, sr18, sr19 : std_logic;

begin

    cc1:  counter port map (clk=>clk0, set=>set0, d=>d0,  q=>q1,  reset=>sr1);
    cc2:  counter port map (clk=>clk0, set=>sr1,  d=>q1,  q=>q2,  reset=>sr2);
    cc3:  counter port map (clk=>clk0, set=>sr2,  d=>q2,  q=>q3,  reset=>sr3);
    cc4:  counter port map (clk=>clk0, set=>sr3,  d=>q3,  q=>q4,  reset=>sr4);
    cc5:  counter port map (clk=>clk0, set=>sr4,  d=>q4,  q=>q5,  reset=>sr5);
    cc6:  counter port map (clk=>clk0, set=>sr5,  d=>q5,  q=>q6,  reset=>sr6);
    cc7:  counter port map (clk=>clk0, set=>sr6,  d=>q6,  q=>q7,  reset=>sr7);
    cc8:  counter port map (clk=>clk0, set=>sr7,  d=>q7,  q=>q8,  reset=>sr8);
    cc9:  counter port map (clk=>clk0, set=>sr8,  d=>q8,  q=>q9,  reset=>sr9);
    cc10: counter port map (clk=>clk0, set=>sr9,  d=>q9,  q=>q10, reset=>sr10);
    cc11: counter port map (clk=>clk0, set=>sr10, d=>q10, q=>q11, reset=>sr11);
    cc12: counter port map (clk=>clk0, set=>sr11, d=>q11, q=>q12, reset=>sr12);
    cc13: counter port map (clk=>clk0, set=>sr12, d=>q12, q=>q13, reset=>sr13);
    cc14: counter port map (clk=>clk0, set=>sr13, d=>q13, q=>q14, reset=>sr14);
    cc15: counter port map (clk=>clk0, set=>sr14, d=>q14, q=>q15, reset=>sr15);
    cc16: counter port map (clk=>clk0, set=>sr15, d=>q15, q=>q16, reset=>sr16);
    cc17: counter port map (clk=>clk0, set=>sr16, d=>q16, q=>q17, reset=>sr17);
    cc18: counter port map (clk=>clk0, set=>sr17, d=>q17, q=>q18, reset=>sr18);
    cc19: counter port map (clk=>clk0, set=>sr18, d=>q18, q=>q19, reset=>sr19);
    cc20: counter port map (clk=>clk0, set=>sr19, d=>q19, q=>q20, reset=>sr20);

end ARCH2;

当我编译完整的计数器时,我得到 21 个错误,听起来都差不多:

Error: C:/Users/Connor Doherty/Documents/Modelsim/Complete Counter.vhd(21): Cannot read output "q1".<br/>
   VHDL 2008 allows reading outputs.<br/>
   This facility is enabled by compiling with -2008.<br/>
Error: C:/Users/Connor Doherty/Documents/Modelsim/Complete Counter.vhd(22): Cannot read output "q2".<br/>
   VHDL 2008 allows reading outputs.<br/>
   This facility is enabled by compiling with -2008.<br/>
Error: C:/Users/Connor Doherty/Documents/Modelsim/Complete Counter.vhd(23): Cannot read output "q3".<br/>
   VHDL 2008 allows reading outputs.<br/>
   This facility is enabled by compiling with -2008.<br/>
Error: C:/Users/Connor Doherty/Documents/Modelsim/Complete Counter.vhd(24): Cannot read output "q4".<br/>
   VHDL 2008 allows reading outputs.<br/>
   This facility is enabled by compiling with -2008.<br/>
Error: C:/Users/Connor Doherty/Documents/Modelsim/Complete Counter.vhd(25): Cannot read output "q5".<br/>
   VHDL 2008 allows reading outputs.<br/>
   This facility is enabled by compiling with -2008.<br/>

这继续出现 21 个错误。我不确定如何解决此错误,有人可以帮忙吗?

【问题讨论】:

标签: vhdl counter bits modelsim


【解决方案1】:

正如错误消息所说,您无法读取实体内输出端口的信号值。您将不得不使用额外的内部信号,例如有一个signal q1_i : std_logic;,把所有q1替换成q1_i,最后把内部信号和输出端口q1 &lt;= q1_i;连接起来

【讨论】:

  • 好的,我已经修改为:cc1: counter port map (clk=>clk0, set=>set0, d=>d0, q=>q1, q1_1=>q1, reset=> sr1); cc2:计数器端口映射(clk=>clk0,set=>sr1,d=>q1_1,q2=>q1_2,q=>q2,reset=>sr2);然而,它现在说 q1_i 的“未知形式标识符”。我该如何解决?非常感谢您的帮助。
  • 你误会q1_iq1_1了吗?后缀是字母,不是数字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-19
  • 1970-01-01
  • 2015-01-28
  • 1970-01-01
相关资源
最近更新 更多