アフィリエイト広告を利用しています
ファン
検索
<< 2023年12月 >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
最新記事
(12/20)KI cad インストールしてみよう
(04/11)【JAVA】チョロメを外部から動作させます。 幽霊が操作してるような
(07/29)spartan3 を cy7c68013 のバルクライトで シリアルコンフィグしてみた
(07/28)ブログ村に参加してみた。いまとのころブログ村からはだれもこない^^;
(07/28)PIC16F1503 を使ってみようかな?? MPLAB 内部クロック
(07/01)からっぽのつぎ のページ きっとはげ に なんか作用するかも
(05/06)GCEでワードプレス 第2 困ったのでやり直し手順
(05/05)https://certbot.eff.org/lets-encrypt/centosrhel7-apache をみてハマったこと
(04/28)フェドラ をつかって switchbot をアクセス する。  ? 未解決
(04/02)【オープンVPN】setsebool -P openvpn_enable_homedirs 1 でうごいた
(04/01)【QT5】わからないのでタイムアウトで自動でキャンセルボタン押すメッセージボックスつくってみた
(03/31)qt5よくわからんのだが メッセージボックスの OKスイッチをタイマーで押してみた。
(03/09)【boost】message queue 使い方 目も目も
(03/08)【バカの一つ覚え】ユニークID作成とそのちょっとした応用
(03/04)【パソコン】【GPIO】いったいこれは?
(02/26)【VHDL入門】ABZ信号から Hsync Vsyncを作り出してみよう その2
(02/26)【VHDL入門】ABZ信号から Hsync Vsyncを作り出してみよう その1
(02/26)【VHDL入門】速度比較 エンコーダーABZ相 ソースファイル付き
(02/25)【VHDL入門】ロータリーエンコーダABZ 出力のサンプル 200Mhz動作?
(02/23)【VHDL入門】UART 送受信繰り返しのテストベンチ作成してみたい
最新コメント
カテゴリーアーカイブ
プロフィール
有象無象さんの画像
有象無象
はげはじめました 禿増されます。励ましのコメントお待ちしてます。  
プロフィール

広告

posted by fanblog

2021年02月14日

【VHDL入門】20分周のVHDLから シミュレーションまで

おまちかね (だれがじゃ) 単純にクロックを分周して パルスを出す回路だ。
デューティ50%と 20回に一回 1クロックパルスだす両方だ。
 あんまりデューティ50%は必要がないのだが 出してみたというだけ 芸のない回路だ。

 FPGAのなかで 50%デューティのパルスを作ってグローバルクロックに載せてるのを見たことがあるが
あれは 管理しにくいし 遅延がおきるので 扱いにくい
 元クロックとは 遅延分ずーっとずれたままになる。

 だめだとはいわないけど 私は そんなの管理できないので ・・・

また 配線が複数になるのを防ぐために 回路からは 作られたパルスを 1クロック遅らせて アウトピンにつなぐ これで アンド オア 論理がだらだら 長距離ひっぱれるのを防ぐのだ。

シミュレーションは 20分周なんて10進数なので デシマルでカウンターは表示した。

リセットしてないという苦情も 受け付けなくはないが FPGAって基本RAM動作 コンフィグ終了したところで 普通はカウンター値もゼロとなっている。 そんなデバイス特性をつかった プログラムだ
 非同期リセットもできるのだが  非同期なので リセットの瞬間 ひげがでたりするので 私はそれはきらってる。
signal R_div : std_logic:='0';  な書き方で 初期値ゼロになるの もしこれを signal R_div : std_logic:='1'
とかくとコンフィグされたとき1になるらしい。  シミュレーションのときもこれいれてないとリセットでもしないかぎり アンデファインド になるので シムできない しむしむ するには初期値がいるよってこと

20分周.png

テストベンチはこんなもの

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;


ENTITY tb_div IS
END tb_div;

ARCHITECTURE behavior OF tb_div IS

COMPONENT div
PORT(
i_clk : IN std_logic;
o_div_duty50 : out STD_LOGIC;

o_div : OUT std_logic
);
END COMPONENT;


--Inputs
signal i_clk : std_logic := '0';

--Outputs
signal o_div : std_logic;
signal o_div_duty50 : std_logic;

-- Clock period definitions
constant i_clk_period : time := 10 ns;

BEGIN

-- Instantiate the Unit Under Test (UUT)
uut: div PORT MAP (
i_clk => i_clk,
o_div_duty50 => o_div_duty50,
o_div => o_div
);

-- Clock process definitions
i_clk_process :process
begin
i_clk <= '0';
wait for i_clk_period/2;
i_clk <= '1';
wait for i_clk_period/2;
end process;


-- Stimulus process
stim_proc: process
begin
-- hold reset state for 100 ns.
wait for 100 ns;

wait for i_clk_period*10;

-- insert stimulus here

wait;
end process;

END;



ソースファイルはこんなもの 1クロック遅らせて出力してるのが 設計上負担がない

library ieee;
use ieee.std_logic_1164.all;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
library unisim;
use unisim.vcomponents.all;

entity div is
Port ( i_clk : in STD_LOGIC;
o_div_duty50 : out STD_LOGIC:='0';
o_div : out STD_LOGIC:='0'
);
end div;

architecture Behavioral of div is
signal cnt : std_logic_vector(7 downto 0) := (others => '0');
signal R_div : std_logic:='0';
signal R_div_duty50 : std_logic:='0';

begin

process (i_Clk)
begin
if rising_edge(i_Clk) then

cnt <=cnt + '1';
if(cnt=X"09")then
R_div_duty50<='0';

elsif(cnt=X"13")then
R_div_duty50<='1';
cnt<=(others => '0');
R_div<='1';
else

R_div<='0';
end if;

o_div_duty50<=R_div_duty50;
o_div<=R_div;
end if;
end process;

end Behavioral;




以上ですーーー
 おまけ むかし スパルタン3で200MHz 動作させたときの 配置配線です。
 手動で配置しないと なかなか全体として100Mhzで動作させるのは面倒です。
 ジョークなのですが 250Mhzで動くかな とやってみたところ 動きはしましたが 
 FPGAが少々熱くなるので 200Mhzに戻したときのものです。 レポートでは動かないことになっていました。
配置配線.png

 アルテラで言うと サイクロン なんかも 200Mhzぐらいで動かせればいいな 100Mhzは軽く動作するようです。
posted by 有象無象 at 09:47| Comment(0) | TrackBack(0) | VHDL
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/10537958
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
×

この広告は30日以上新しい記事の更新がないブログに表示されております。