process文の中で clock’ event and clock = ‘1’ とエッジにより駆動する様に記述すると
その中で、再び別の信号の event を書くことは出来ません。
(よくよく考えてみると無理なことはわかるんですけど)
解決策は以下のソース例の様に、前回の状態を保持して、
変化を検出するロジックを記述する事。
process ( clock, reset )
begin
if (reset = EN) then
.......
elsif (clock’ event and clock = ‘1’) then
if(start = EN) then
.......
if( trans_clk’event and trans_clk = ‘0’ ) then –エラー
elsif( trans_clk = ‘0’ and old_trans_clk = ‘1’ ) then –修正
.......
end if;
old_trans_clk <= trans_clk;
end if;
VHDL constantの記述位置
constantを入れたくて、何処に入れたらエラーにならないか調べたら
architecture文の次に入れたら問題ないのですが、
その前のentityで使用したかったので、その前に単純に書くとエラーになるので
以下の方法で、記述しました。
最初package文でくくった中にconstant文を記述
そのあと、
library work;
use work.MCP3024_lib.all;
とすれば、OK
package MCP3024_lib is
constant MCP3204_BIT_LEN: integer := 12;
constant MCP3204_CPU_AD_LEN: integer := 3;
constant MCP3204_CH: integer := 4;
constant MCP3204_COM_LEN: integer := 7;
end MCP3024_lib;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
library work;
use work.MCP3024_lib.all;