0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ずっとFPGA初心者(その16):JKフリップフロップ(2)

Posted at

VHDL(Quartus)が生成する回路図

前回「エレキ素人が何か考える(その10)&ずっとFPGA初心者(その15):JKフリップフロップ(1)」にて、
「回路上の左のAND回路と右のNOR回路は、Process文内で順番に実施してはいけないということを意味するはず、、(FPGA内で同時処理が必要)。
(間違っていたら、どなたか、ご指摘ください。)」
とつぶやいたところ、有識者の方から、Quartusにて、RTL Viewer(下記サイト参照)を使うと、回路図表示ができるというアドバイスを頂いたので、その内容を記載する。

そもそもFPGAの構成?

回路図表示(後述)を行ったところ、Dフリップフロップが現れ、初心者として、少々驚いたので調べてみた。

FPGAは、ルックアップテーブルとDフリップフロップなどから構成されているとのこと。

JKフリップフロップ(再掲)

前回の復習。

ANDおよびNORロジックで構成されたFPGAの対象の回路

image.png

VHDLコード

JK.vhd
library ieee;
use ieee.std_logic_1164.all;

entity JK is
  port (CLK, J, K : in  std_logic;  -- ①
        Q, Qbar : out std_logic);   -- ②
end;

architecture RTL of JK is
signal out1 : std_logic := '0';   -- ③
signal out2 : std_logic := '0';
signal out3 : std_logic := '1';
signal out4 : std_logic := '0';

begin
	process (CLK)
	begin
		if (rising_edge(CLK)) then  -- ④
			out1 <= J and out3;
			out2 <= K and out4;
			-- out3 <= not(out1 or out4); -- does not work  -- ⑤
			-- out4 <= not(out2 or out3); -- does not work
		end if;
	end process;
	
	out3 <= not(out1 or out4);  -- ⑥
	out4 <= not(out2 or out3);
	Q <= out4;
	Qbar <= out3;
end RTL;

上記のコード(以降、正しい動きをするもの:A)の回路図表示をしたものと、⑥以下2行の代わりに、⑤以下2行を用いたときのコード(以降、正しくない動きをするもの:B)の回路図表示をしたものとを比較する。

回路図表示

正しい動きをするもの(コードA)

回路1(正しい動き).png

正しくない動きをするもの(コードB)

回路2(正しくない動き).png

考察

(理解できていないところ多々あるので、誤りなどあるかもしれません。)

まずは、前記のとおり、Dフリップフロップが用いられていることがわかる。コードAでは、CLKがAND回路のみ適用される(CLKの立ち上がり時のみANDの結果が次のInputとなる)(のように見える)。コードBでは、AND回路にもNOR回路にもCLKが適用されているようだ。

JKフリップフロップにCLKが入るのは左側のAND回路だけなので、コードBのようにNOR回路にCLKが入ると、動作が期待どおりにならないのは当然、、、と思えるようになってきた。(コードBでは、CLKの立ち上がり時のみに、すべての信号が変化している。)

また、回路図表示にて、コードAでもコードBでも、CLKの立ち上がり時に順番(Process文)に処理されているのかは、素人&初心者にはよくわからず。というより、FPGA的には、そういった構文にすべきではないような気がする。

ソフトウェア視点があるとは言っても、FPGAでは、クロックに合わせた信号の変化を考慮して設計する必要がある、つまり、ハードウェアの資質がMustである、、と勝手に解釈。

次回

素人には、正直、あまり深堀りできず。とにかく、リアルFPGAボードで、VHDLで記述されたコードの動作を確認する。

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?