忍者ブログ

たるくさん、ブログの名前って何ですか?

競技用ロボットについて書いて行くつもりでしたが、更新があまりに不定期なので、間を持つ為に訳の分からない事書くかもしれません。

03/19

Tue

2024

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

06/12

Sat

2010

FPGA動かしてみたよ!!!

↓これ。トレーニングボードです。(EDA-002。お値段は結構する)

FPGA

手始めに組んで見ようと思ったのが、1秒間に何回スイッチが押されたか表示するプログラム。
スピンドルに付ければ回転数が表示出来る、的なもの。

一応、秒間1~9回の認識が出来るようになりました、が。

何でマイコンならすぐに出来るものを、いちいちFPGAで6時間かけて作らなけらばならなかったのか…?
(ノA`)これそういうデバイスじゃねぇから!!


覚書用メモ

Cみたいだから楽勝とか思っていたら概念が全然違いました。('A`)
並列処理で適当な時間ウェイト設けようと思ったらクロックやフラグ設けたり面倒な事になった。
(´・ω・`)やり方がいけないんだ、たぶん。作っててパッとしないソースになったから。

■変数の宣言
signal flag : Integer := 0;

signal:信号の種類
flag:変数の名前
Integer:変数の型
= 0:入する数値(省略可能)


■if文
process (PSW_A) begin
if (PSW_A 'event) and (PSW_A='0') then
if (f_log = BBB) then
upc<=upc+1;
else
f_log <= BBB;
log<=upc;
upc<=1;
end if;
end if;
end process;


processで挟まないと怒られる。
しかもprocess内で変更している関数を、別のprocess内で変更しても怒られる。この条件がマジで勘弁してほしい。('A`)

(変数など)(スペース)'event と書くと、関数の中身が変わった時に実行されるIF文になる。
マイコンの割り込みみたいなものか?
入力端子とかを割り振ると、立ち上がり立下りで反応するので、そのあとで
and (変数='0')とすると、立ち上がり立下り後、信号がLOWの時に反応する条件文になるので、立下りを認識する。


■代入
A=B
とか書いていたのが、

A<=Bになる。
矢印のつもりか!! 条件文みたいになってんぞ、ふざけんな!!


■実行するプログラム
何回もくりかえし処理する場合、Cだと
for(;;){
 繰り返すプログラム
}

とかしてたのが、ループがない。
設定した式や条件文を常に実行しているような形になる。
begin以降がメインのようなので、begin以降に条件を書く。



一応ソースをはって置くけど、とても扱える人には見せられない。(:ノω`)


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

entity test is
port(
CLK:in std_logic;

PSW_A:in std_logic;
PSW_B:in std_logic;
PSW_C:in std_logic;
LED_C:out std_logic;

LCD1_PWR:out std_logic;
LCD2_PWR:out std_logic;
LCD3_PWR:out std_logic;
LCD4_PWR:out std_logic;

LCD_A:out std_logic;
LCD_B:out std_logic;
LCD_C:out std_logic;
LCD_D:out std_logic;
LCD_E:out std_logic;
LCD_F:out std_logic;
LCD_G:out std_logic;
LCD_DOT:out std_logic);
end test;

architecture RTL of test is
signal BBB : Integer := 0;
signal cnt1 : Integer := 0;
signal cnt2 : Integer := 0;
signal upc : Integer := 0;
signal flag : Integer := 0;
signal f_log : Integer := 0;
signal vol : Integer := 0;
signal log : Integer := 0;

begin

process (PSW_A) begin
if (PSW_A 'event) and (PSW_A='0') then
if (f_log = BBB) then
upc<=upc+1;
else
f_log <= BBB;
log<=upc;
upc<=1;
end if;
end if;
end process;

process (CLK) begin
if (CLK 'event) and (CLK='0') then
cnt1<=cnt1+1;
end if;

if (cnt1>100000) then
cnt1<=0;
cnt2<=cnt2+1;
end if;

if (cnt2>70)then
cnt2<=0;
BBB<=BBB+1;

if (BBB < 9)then
BBB<=BBB+1;
elsif (BBB > 8)then
BBB<=0;

end if;
end if;
end process;

process (log) begin
if(log = 0) then
LCD_A<='0';
LCD_B<='0';
LCD_C<='0';
LCD_D<='0';
LCD_E<='0';
LCD_F<='0';
LCD_G<='1';

elsif(log = 1) then
LCD_A<='1';
LCD_B<='0';
LCD_C<='0';
LCD_D<='1';
LCD_E<='1';
LCD_F<='1';
LCD_G<='1';

elsif(log = 2) then
LCD_A<='0';
LCD_B<='0';
LCD_C<='1';
LCD_D<='0';
LCD_E<='0';
LCD_F<='1';
LCD_G<='0';

elsif(log = 3) then
LCD_A<='0';
LCD_B<='0';
LCD_C<='0';
LCD_D<='0';
LCD_E<='1';
LCD_F<='1';
LCD_G<='0';

elsif(log = 4) then
LCD_A<='1';
LCD_B<='0';
LCD_C<='0';
LCD_D<='1';
LCD_E<='1';
LCD_F<='0';
LCD_G<='0';

elsif(log = 5) then
LCD_A<='0';
LCD_B<='1';
LCD_C<='0';
LCD_D<='0';
LCD_E<='1';
LCD_F<='0';
LCD_G<='0';

elsif(log = 6) then
LCD_A<='0';
LCD_B<='1';
LCD_C<='0';
LCD_D<='0';
LCD_E<='0';
LCD_F<='0';
LCD_G<='0';

elsif(log = 7) then
LCD_A<='0';
LCD_B<='0';
LCD_C<='0';
LCD_D<='1';
LCD_E<='1';
LCD_F<='0';
LCD_G<='1';

elsif(log = 8) then
LCD_A<='0';
LCD_B<='0';
LCD_C<='0';
LCD_D<='0';
LCD_E<='0';
LCD_F<='0';
LCD_G<='0';

else
LCD_A<='0';
LCD_B<='0';
LCD_C<='0';
LCD_D<='0';
LCD_E<='1';
LCD_F<='0';
LCD_G<='0';

end if;
end process;

end RTL;
PR

Comment

無題

  • たく。
  • 2010-06-13 23:12
  • edit
難いな。
A<=Bで代入って、Cの場合A<=Bの比較条件はどうなる?
C言語のようだけど、アセンブラの面倒臭さがあるな。

無題

  • たるく
  • 2010-06-14 21:47
  • edit
どうやらif thenの間は挿入ではなく、判定条件として判定されるようですね…
ifばっか書いてると挿入の際に”=”と書いてエラー出るのに憤怒しますわ。('A`;)

アセンブラは授業とかでやったけど、未だに代入の条件がよく分からんという…

あれ?俺、プログラム向いてない?
お名前
タイトル
E-MAIL
URL
コメント
パスワード

Trackback

この記事にトラックバックする

カレンダー

02 2024/03 04
S M T W T F S
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

訪問者数

プロフィール

HN:
たるく
年齢:
37
性別:
男性
誕生日:
1986/03/24
職業:
学生
趣味:
ロボット製作
自己紹介:
"諏訪東京理科大学"の中の人
で分かってほしい人には分かってもらえると思う。

競技大会用のロボット作ってる、今年から社会人な人です。

ブログ内検索

アクセス解析

Copyright © たるくさん、ブログの名前って何ですか? : All rights reserved

TemplateDesign by KARMA7

忍者ブログ [PR]