ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

FPGA/CPLD友の会コミュのカウンタについて ver.2

  • mixiチェック
  • このエントリーをはてなブックマークに追加
前回は色々と御指導頂きありがとうございます。
再度御教授頂きたく・・・

前のトピに再度書き込もうとしたのですが、
写真をコメントで乗せられないので新規トピと
相成りました申し訳無いです。

内容としては・・・下に挙げる物を製作中です。
アウトポートVはカウンタの中を見る為に置いたものです。
実際には消して用います。
更に、Nやカウンタの上限の数値が適当なのは
まだプログラム製作段階なので
融通の利く様にしてあるだけです。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

-- Uncomment the following lines to use the declarations that are
-- provided for instantiating Xilinx primitive components.
--library UNISIM;
--use UNISIM.VComponents.all;

entity ckc is
generic(N : integer :=15 );
Port ( CK, Q : in std_logic;
D : out std_logic;
CP, OP : inout std_logic;
V : out std_logic_vector(N-1 downto 0));
end ckc;

architecture Behavioral of ckc is

signal COUNT_TMP : std_logic_vector(N-1 downto 0):=(others => '0');

begin

D <= CK and Q;

process( CK, Q, CP ) begin
if(CP'event and CP = '1') then
COUNT_TMP <= (others => '0');
elsif (Q = '1') then
if (CK'event and CK = '1') then
COUNT_TMP <= COUNT_TMP + 1;
if (COUNT_TMP = "100") then
CP <= '0';
OP <= '1';
else
null;
end if;
end if;
end if;

if (Q'event and Q = '0') then
CP <= '1';
else
CP <= '0';
end if;
end process;

V <= COUNT_TMP;

end Behavioral;




問題点1
写真にあるOPという信号を
カウンタの上限(プロセス文にて自分で指定)となった時に
これを立ち上らせたい。

問題点2
写真にあるCPという信号は
元々1の状態で幅があったのですが
プログラムをいじったらただの棒になりました。
これを元に戻したい。


なのですが・・・
教本と睨めっこで埒があきません。

コメント(5)

写真見づらいですね・・・申し訳ありません。
問題に答えることにはなりませんが,

双方向バッファを使わずに,inout信号を使うのは,まずいです.基本的にinout信号は信号をFPGAの外に出すために使うものなので,FPGA内部で使う信号はin,outを使うべきです.

CPの立ち上がりをCP'event and CP = '1'で検出するのもやめたほうがいいです. 私が,クロック以外の立ち上がりを検出するときは以下の手順で検出しています.

1.DFFにCPを入力
2.DFFとCPの値を比較して立ち上がりを検出

 DFFにはCPの1CLK前の状態が保存されるので,今のCPと1CLK前のCPを比較して,違っていれば立ち上がった(もしくは下がった)と判断します.
立ち上がりのみを検出するときは,

    (DFF EXOR CP) AND CP

で検出できると思います.
event文のIF節はelseつけちゃいけません。
立ち下がりの瞬間だけ1みたいな動作は普通は保証できません。
自分の至らない所が多数あるのですね。
ありがとうございます。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

FPGA/CPLD友の会 更新情報

FPGA/CPLD友の会のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング