アフィリエイト広告を利用しています
ファン
検索
<< 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 送受信繰り返しのテストベンチ作成してみたい
最新コメント
カテゴリーアーカイブ
プロフィール
有象無象さんの画像
有象無象
はげはじめました 禿増されます。励ましのコメントお待ちしてます。  
プロフィール

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

2022年04月11日

【JAVA】チョロメを外部から動作させます。 幽霊が操作してるような

役に立つ記事を書きたいなと最近思うようになったおっちゃんです。
子供バイリンガル子育ては一段落でエンジニアリング使えばネィティブように会話できる子供になりました。
おもしろいものです。

今日はあれです。JAVAを使って googlechrome を操作してみます。
chormedriver を JAVAからアクセスし 勤怠システムを自動でクリックします。

さっさと動作させてたい 原理なんざどうでも いいという貴兄におとどけ

手順は https://chromedriver.chromium.org/downloads でchoromeドライバを適切なものをえらぶ
 チョロメのバージョン毎に ドライバが分かれています。 

NETBEANSのインストールは済んでいるものとします。 このページの後でLINUX fedora にネットビーンズ搭載方法をちゃらっと書きます。 

コンパイル前の準備

 今回は プロジェクト でMavenを使います。
  プロジェクトの作り方は google してください。File ->new project -> このあと Mavenでのプロジェクトをつくります。
作られたら  ProjectFiles の項目に POM.XMLが作られます。
  ここの 青い部分はコンパイラがつくりだしたものでそのまま放置です。
ぽむ.png

 この下は 画像ではります。ネットでググると 同じ文言どっかにでてきます。 XMLなので このエディタではれません。いい方法あったら教えてください。 ライブラリを引っ張ってくるもののようです。

POm2.png
pom3.png




いよいよ JAVA プログラム



public class Attendance {
public static void main(String[] args) throws InterruptedException, UnsupportedEncodingException {
System.setProperty("webdriver.chrome.driver", "../chromedriver");//// ドライバーの場所を指示します。
WebDriver driver = new ChromeDriver();
driver.get("https://ログインしたいURL/login");
driver.manage().window().setSize(new Dimension(1249, 768));
driver.findElement(By.id("user_login_id")).sendKeys("ユーザーねーむ");
driver.findElement(By.id("user_password")).sendKeys("パスワード");
driver.findElement(By.name("Submit")).click();
driver.findElement(By.id("btnIN1")).click();
driver.quit();
}

ネットビーンズインストール


https://netbeans.apache.org// にアクセス インストールスクリプトをダウンロード 
これをいきなり起動して動作できる 装置もありますが
多分無理です。

#dnf grouplist で 
[liveuser@fedora netbeans]$ dnf grouplist installed
メタデータの期限切れの最終確認: 0:00:59 時間前の 2022年04月11日 06時56分45秒 に実施しました。
インストール済みの環境グループ:
Xfce デスクトップ
インストール済みのグループ:
管理ツール
C 開発ツールとライブラリー
開発ツール
電子ラボラトリ
技術系と科学系
こんなの インストールしてるとjavaも入ってますので動作します。 どれがJAVAはっていたか覚えていません。 おそらく ”技術系と科学系” だったような気がします。 どうせ使うのでこれぐらいインストールしててもばちはあたらないでしょう!  
この後 ダウンロードしたスクリプトを実行すると netbeansインストールできるかと思います。
インストール後

 GUI ランチャーの登録 
vi /usr/share/applications/netbeans.desktop
[Desktop Entry]
Type=Application
Version=1.0
Name=Netbeans
Name[ja]=Netbeans
GenericName=Integrated Development Environment
GenericName[ja]=統合開発環境
Comment=A fast and lightweight IDE using GTK+
Comment[ja]=GTK+ を用いた高速で軽量な IDE
Exec=/usr/local/netbeans-13/netbeans/bin/netbeans %F
Icon=/usr/local/netbeans-13/netbeans/nb/netbeans.png
Terminal=false
Categories=GTK;Development;IDE;TextEditor;
MimeType=text/plain;text/x-chdr;text/x-csrc;text/x-c++hdr;text/x-c++src;text/x-java;text/x-dsrc;text/x-pascal;text/x-perl;text/x-python;application/x-php;application/x-httpd-php3;application/x-httpd-php4;application/x-httpd-php5;application/xml;text/html;text/css;text/x-sql;text/x-diff;
StartupNotify=true
X-Desktop-File-Install-Version=0.26








続きを読む...

2021年07月29日

spartan3 を cy7c68013 のバルクライトで シリアルコンフィグしてみた

もちろん パクリだ。
http://www.triplespark.net/elec/periph/USB-FX2/software/

 この人すげー
http://www.triplespark.net/elec/periph/USB-FX2/software/cycfx2prog-0.47.tar.gz
これを ダウンロードして 展開
 このなかから FX2に にプログラムをダウンロードしてくる部分を切り出します

 リセットなんかを 切り出します。
そして それを Qt5 みたいなプラットフォームで コンパイルします。
 -lusb みたいな リンクオプションが必要ですが それでコンパイルできます。


そこで バルクループの 典型
  さっきの人のサイトの  
http://www.triplespark.net/elec/periph/USB-FX2/software/local_examples.html#convert_string
 これを SDCCで  コンパイルします。

 うんでもって cycfx2prog のなかから パソコン側の リードライトをきりだします。
 
そうすると リードライトが ループします。
 そこで ザイリンクスの スパルタン3ように つくった BIN ファイルを
 たとえば512バイト 分割で送り込み  スパルタン3にプログラムします。
 
  BINファイルを 単純に 上位ビットから 書き込めばいいです。

 Md =111 
 ハードウェアのSWPみたいな信号は L固定
 
 手順は  CLK DINをLにして
      program _b を Lにして
      iit_b が ローになったら program_bをハイにして
     init_bがハイになったら  噂によると2ms待ってから 
     データを セットして クロックを ↑ する
     これを 全部おくると DONEする

     INIT_B と DONEは プルアップしておきましょう

 以上が今日の仕事 CY7C68013で プログラム完成しました。


2021年07月28日

ブログ村に参加してみた。いまとのころブログ村からはだれもこない^^;

こんばんは 寝る間際に 雑談んもいいところ ブログ村に参加してみたけど  いまとのころだれもこない   というか 記事が登録されないみたい。  だんだん頭が ピカードになってきたおっちゃんでした。 とりあえず 記事投稿が見えるかどうかのテストです。  では 明日は VHDLと格闘します。 あらら 登録されたみたい  時間がかかるようです。  では これから なんだかんだと投稿してみます。

PIC16F1503 を使ってみようかな?? MPLAB 内部クロック

頑張るオヤジがPICマイコンに挑戦です。 内部クロックの使い方がわからない MPLABは ダウンロードしてインストールするだけなので 端折りました。
リソースマネージメントを使う
リソースマネージメントを使わないと目も当てられません。
やりたいこと
  • 内部クロックを使いたい
  • リソースマネージメントで追加したソースファイルを見ること
  • 割り込みハンドラーを調整する。

こんな話です。

今回CLC  タイマーを使いたくおもいます。 CLCっって PICマイコンのなかの ちょっとしたロジックです。 例えば オン時間をタイマーで制限かけるみたいな使い方です。

MCC コンフィグマネージャーが見えないときは

リソースマネージメント呼び出し.png

MPLAB window ->

最初にクロック設定

クロックは 当該 MPUのマニュアル参照します。 PIC-16F1503.png

タイマー2を使う

タイマー2.png クロックもFosc/4 で固定です ということは さっきのクロック設定から  きっと16Mhz/4 つまり 4Mhz だから 250nSの整数倍になりそうです タイマー2−2.png 辻褄があいそうですね。 都合7マイクロ秒でタイムアップするようにしました。

CLCを設定します。

clc設定.png

タイマー1の設定

タイマー1.png CLCをイネーブル 割り込みを発生させて 立ち上がりエッジで割り込みかけます。 タイムチャートは面倒なので書いていません。
  • CLCINが 0->1になる。割り込み発生。タイマー2を起動する。
  • タイマー2タイムアップで CLCの出力が 0ー>1になる 割り込み発生する。
  • タイマー1を起動する。タイマー1がタイムアップする 割り込み発生する。

ここで ジェネレータを起動します。

ジェネレータを起動.png

こんな感じですすめます。

  • PINモジュールで IOC ポジティブの設定
  • TIMER1 T1G で起動設定。
  • CLC1に入力がくる CLC1アウトがローになる。
  • タイマー2起動
  • タイマー2タイムアップ CLC1アウトがHになる。
  • タイマー1起動
  • タイマー1がタイムアップ CLC1アウトがLになる。
posted by 有象無象 at 20:48| Comment(0) | TrackBack(0) | PIC

2021年07月01日

からっぽのつぎ のページ きっとはげ に なんか作用するかも

洗濯用洗剤 500ml 植物由来 ソープナッツ 無添加洗剤 肌に優しい 敏感肌 部屋干しOK 環境に優しい 天然石けん成分 サポニン 化学品不使用 ケミカルフリー エコ洗剤 洗濯洗剤 柔軟剤不要 タイ製 送料無料

価格:1,480円
(2021/7/1 21:32時点)
感想(0件)




噂では 禿は 皮脂がむだに 落とされた場合 そこに 合成洗剤がかぶると やばいらしい
天然の フグの内臓 みたいな  天然だから安全という話も 絶対ではないが 
 合成洗剤より いいだろうとおもって 試してみる

2021年05月06日

GCEでワードプレス 第2 困ったのでやり直し手順

GCEで ワードプレスインストールしたみたのだが 無料枠ではあまりに非力でどうにもならなかった
 焼き直しだ。 改めて手順を書いてみる。
GCE ログインして インスタンスをつくる。

 ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
わたしの場合 ssh-keygen -t rsa -b 4096 -C "darxxxxxda@gmail.com"
こんな感じで 作って登録する。

ログインしたら 
sudo su

まずルートユーザーになって
yum -y update && yum -y install yum-utils
reboot
またログインします。

yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php74
yum install -y php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysqlnd

yum -y install mariadb-server
vi /etc/my.cnf に 
[mysqld]
character-set-server=utf8

systemctl enable --now mariadb
utf8 を 追加して マリアDBを起動する。

mysql_secure_installation     マリアDBを初期化する。
mysql -u root -p さっき初期化でいれたパスワードが要求される

MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on wordpress.* to wordpress@'localhost' identified by 'ここにぐちゃらとパスワードをいれる'
-> ;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye


こっちで とりあえず
yum install -y wget
wget https://wordpress.org/latest.tar.gz


systemctl enable --now httpd

HTTPSに変更する。
# yum install -y epel-release
# yum install -y certbot python-certbot-apache

certbot certonly --webroot -w /var/www/html -d *[domainname];
ls -l /etc/letsencrypt/live/temp.xx.xx/ ここに3つのふぁいる?ができるので

vi /etc/httpd/conf.d/ssl.conf
この中のSSLなんちゃらを なんちゃらすることになる。

SSLCertificateFile /etc/letsencrypt/live/[domain]/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/[domain]/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/[domain]/chain.pem




////////////ワードプレスの変更 英語だけになってたので
https://wordpress.stackexchange.com/questions/217880/cant-change-language-only-english-united-states
のアドバイスにしたがって
vi wp-config.php
define('FS_METHOD', 'direct'); をいれた

変更中ぐらいは wp-content を user=apachに

vi /etc/httpd/conf/httpd.conf
ルートをwordpressディレクトリにしてみた



////////////オプションモジュール

sudo yum install -y php php-dom
sudo yum install -y php php-mbstring
sudo yum install -y php php-imagick
sudo yum install -y php php-gd
sudo yum install -y php php-zip
sudo systemctl restart httpd.service


もっとはやくすれば良かったのだが
#cd /
# sudo truncate -s3G swap
# sudo cp swap _swap --sparse=never
# sudo mkswap _swap
これってじゃまなので とりあえずルートに移動しまう
#sudo chmod 600 _swap
#sudo swapon _swap
#sudo rm swap

困ってること certbotで 何回も失敗していま アップデートできないので
失敗したままで 怪しいサイトになっています。いつ 認証がOKになるんだろうか
 噂では一週間ぐらいだめらしい。一週間だめだってそう書かれてました



2021年05月05日

https://certbot.eff.org/lets-encrypt/centosrhel7-apache をみてハマったこと

certbot が 動かない 
sudo snap install --classic certbot
 をするため  Centos7 に snap をインストールした。
その手引きがここにあった。
https://certbot.eff.org/lets-encrypt/centosrhel7-apache




sudo yum install mod_ssl
 がなくて こまった。
 SSL モジュールがないなんて いうので これいれた

これここに書かれていた
https://stardevstudio.com/webserver/ssl_module-trouble-while-using-certbot/

あと バーチャル ホストが ない というので
 sudo certbot --apache certonly

こたえは ここにあった。
https://community.letsencrypt.org/t/please-add-a-virtual-host-for-port-80/75818/9

2021年04月28日

フェドラ をつかって switchbot をアクセス する。  ? 未解決

https://github.com/OpenWonderLabs/python-host.git
git ハブから あれしてなにして

python3 -m pip install pybluez

python-host/switchbot_py3.py --scan

をしたところ とまった こまった 答えがでた。?? どうなることやら 今回は答えでないと思う


bluez/btmodule.h:5:10: 致命的エラー: bluetooth/bluetooth.h: そのようなファイルやディレクトリはありません
5 | #include
| ^~~~~~~~~~~~~~~~~~~~~~~
コンパイルを停止しました。
error: command '/usr/lib64/ccache/gcc' failed with exit code 1


 こまった  ーーーー> 答え   dnf install bluez-libs-devel

dnf install python-gattlib

python-host/switchbot_py3.py --scan


だめなんだなこれが こまった

2021年04月02日

【オープンVPN】setsebool -P openvpn_enable_homedirs 1 でうごいた

異常です。 ちがった 以上です。 setsebool -P openvpn_enable_homedirs 1

2021年04月01日

【QT5】わからないのでタイムアウトで自動でキャンセルボタン押すメッセージボックスつくってみた

ほんとわけわからん でも動作だけはするのだ
#ifndef SHORTMESSAGEBOX_H
#define SHORTMESSAGEBOX_H
#include
#include
class ShortMessageBox : public QWidget
{ Q_OBJECT
public:
explicit ShortMessageBox(QWidget *parent = nullptr);
~ShortMessageBox();
int exec(QString msg="",int interval=1000);
QPushButton * CancelButton;
signals:
private:QMessageBox *m_msgbox=nullptr;
};
#endif // SHORTMESSAGEBOX_H


#ifndef
#include "shortmessagebox.h"
#include
#include
ShortMessageBox::ShortMessageBox(QWidget *parent) : QWidget(parent)
{ m_msgbox= new QMessageBox(this);
this->setWindowTitle(QString("attention"));
m_msgbox->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
QListbuttonlist= this->findChildren();
for(int i=0;isetObjectName(bt->text());}
CancelButton=m_msgbox->findChild("&Cancel");
}
int ShortMessageBox::exec(QString msg,int interval)
{
if(msg=="")
{
msg ="--------------------------------\n";
msg+="既に存在しています \n";
msg+=" 再構築する場合1.5秒位内にOKを押してください \n";
msg+="********************************\n";
}
m_msgbox->setText(msg);
m_msgbox->show();
QTimer * m_myLongTimer = new QTimer(this);
m_myLongTimer->setInterval(interval);
m_myLongTimer->setSingleShot(true);
connect(m_myLongTimer, &QTimer::timeout,this, [this](){this->CancelButton->animateClick(); });
m_myLongTimer->start();
int ret=m_msgbox->exec();
disconnect(m_myLongTimer);
m_myLongTimer->stop();
delete m_myLongTimer;
return ret;
}
ShortMessageBox::~ShortMessageBox()
{
if(m_msgbox) {delete m_msgbox;m_msgbox=nullptr;}
}

使い方はみりゃわかるべな

ShortMessageBox msg;
bool rmdirflg=false;
int ret=msg.exec();
switch (ret)
{
case QMessageBox::Ok: qDebug()<<"//OK押されたら 存在をけす"; rmdirflg=true; break;
case QMessageBox::Cancel: qDebug()<<"/Cancel"; break;
default: qDebug()<<"// 来ないけど一応。"; break;
}
if(!rmdirflg)return;


なかんじ

2021年03月31日

qt5よくわからんのだが メッセージボックスの OKスイッチをタイマーで押してみた。

{
QMessageBox mbox ;
mbox.setWindowTitle(QString("attention"));
QString msg ="--------------------------------\n";
msg+="既に存在しています \n";
msg+=" 再構築する場合1.5秒位内にOKを押してください \n";
msg+="********************************\n";
mbox.setText(msg);
mbox.show();
mbox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel | QMessageBox::Ok);

 こんな感じで 作ったのいいけど タイマーで自動的にキャンセルを押したいのだがわからん
QListbuttonlist= mbox.findChildren();
for(int i=0;itext()<objectName();bt->setObjectName(bt->text());
}

 とりあえず &OK とか &CAN だったかな これをオブジェクトネームにいれて
から
QPushButton * CancelButton=mbox.findChild("&Cancel");
qDebug()<animateClick(); } );
 ラムダ式で アニメートすると クリックされた。 

 よくわからんが とりあえず 動いた

2021年03月09日

【boost】message queue 使い方 目も目も

誤字脱字 気にしない おっちゃんです。 不真面目です。  では  UUIDを つかって uuidgen 覚えにくい命令だ  #define "" boost child は 仕様が いいかもなぁ WINDOWSじゃしらないが   while(! pipe_stream) でループして   getline で待ってると  最後にNULLがくる 面白いこれっていいのかな

2021年03月08日

【バカの一つ覚え】ユニークID作成とそのちょっとした応用

ユニークIDを 作るには リナクスの場合 uuidgen
$ uuidgen
1aba7495-7df1-4bc6-9b21-c3605abebbea


な感じだ。 これで 
uint64_t max_msg_num=100;
try{
msgq= new boost::interprocess::message_queue( boost::interprocess::create_only, UUID, max_msg_num, sizeof(Data) );
}
catch(boost::interprocess::interprocess_exception const& ipe)
{
std::cerr << "Error: #" << ipe.get_error_code() << ", " << ipe.what() << "\n";
}

では 相手から 送ってくる

try{
msgq=new boost::interprocess::message_queue( boost::interprocess::open_only, UUID );
std::cout<<"start"<< msgq->get_num_msg() <get_num_msg() <send( &data, sizeof(Data), 0 );
}catch(boost::interprocess::interprocess_exception const& ipe)
{
std::cerr << "Error: #" << ipe.get_error_code() << ", " << ipe.what() << "\n";
}

 このキューは 
#include
#include

こんなリンクだ。
LIBS+=-lpthread
LIBS+=-lboost_system
LIBS+=-lrt









posted by 有象無象 at 17:30| Comment(0) | TrackBack(0) | C++

2021年03月04日

【パソコン】【GPIO】いったいこれは?

パソコン フェドラ LINUX なのだが
 ふと /dev/をみると
 /dev/gpiochip0 が 見える なんじゃこりゃ いわゆるパソコン が GPIOを持ってるように見える
じゃ なにがおきるか知らんが アクセスしてみよう という わからん話だ。

ユーティリティを インストールする。
dnf install libgpiod-devel
dnf install libgpiod-utils

gpioinfo gpiochip0
 すると 60ラインの なんだかわからないIOみたいなものが見える
 いったいなんだのだろう。
 

オープンしてみよう だめかもな
#include
truct gpiod_chip *chip;
struct gpiod_line *line;
int req, value;

chip = gpiod_chip_open("/dev/gpiochip0");

れいの如く とりあえず ROOTユーザでないと動作できない そこで
以前のように あれした 


gpioinfo でみると line 9出力なので  なにがおきるかしらんが OUTした

piochip0 - 61 lines:
line 0: unnamed unused input active-high
line 1: unnamed unused input active-high
line 2: unnamed unused input active-high
line 3: unnamed unused input active-high
line 4: unnamed unused input active-high
line 5: unnamed unused input active-high
line 6: unnamed unused input active-high
line 7: unnamed unused input active-high
line 8: unnamed unused input active-high
line 9: unnamed unused output active-high
line 10: unnamed unused input active-high
             |
             |


だいじょうぶかなぁ 勝手に出力ON OFFしてみた


if ((glineout=gpiod_chip_get_line(chip, 8)) == NULL) {
perror("gpiod_chip_get_line");
return 1;
}

// GPIOを出力モードに設定する
if (gpiod_line_request_output(glineout, appname, 0) != 0) {
perror("gpiod_line_request_output");
}
for(int i=0;i<100;i++)
{

if ((value=gpiod_line_set_value(glineout, i&1)) == -1)
{
perror("gpiod_line_set_value");
}

}
gpiod_chip_close(chip);




2021年02月26日

【VHDL入門】ABZ信号から Hsync Vsyncを作り出してみよう その2

と思ったのですが すみません VHDL入門て書いておきながら まとめるのが面倒臭すぎます   今回欠番です。  原理は 回転方向を 検出して おいて どうやってだ は おいておいて  バックラッシュを検出して   あれ して なにして    ぐっと引いて バーーーン という話です。  実は2004年につくって  もうかれこれ 17年 動作しつづけている回路っす。  すみません まとめるの面倒くさすぎです パスします。  ただ 結果はタイムチャートの通り バックラッシュ防止.png
posted by 有象無象 at 11:50| Comment(0) | TrackBack(0) | VHDL

【VHDL入門】ABZ信号から Hsync Vsyncを作り出してみよう その1

【VHDL入門】辛口かな ABZ信号から Hsync Vsyncを作り出してみよう
ABZ が ABZである所以は 逆回転をキャンセルできることにある。

  ロータリーエンコーダーはバックラッシュ起こすことがある。

 ぷるぷると震えると あれでなにで Hsyncにしたとき Hsyncが 余分に?
 出てしまいます。 ではどうすればいいでしょうか とりあえず 単純にデコードしてみましょう。
さっき作ったフリーランと デコーダーを合成します。
 CCだけを Hsyncとしてみます。
 CCW逆回転も ORして Hsyncにいまのところだらしなく どっち周りでも Hsyncします。


----------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 01:52:08 02/26/2021
-- Design Name:
-- Module Name: ABz2HsyncVsync - Behavioral
-- Project Name:
-- Target Devices:
-- Tool versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
library IEEE;
use ieee.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;
entity ABz2HsyncVsync is
port (
I_Clock :in std_logic;
o_A :out std_logic:='0';-- 10khz
o_B :out std_logic:='0';
o_Z :out std_logic:='0';
O_CCx1 :out std_logic:='0';
O_CCWx1 :out std_logic:='0';
o_Hsync :out std_logic:='0';
o_Vsync :out std_logic:='0'
);
end ABz2HsyncVsync;
architecture Behavioral of ABz2HsyncVsync is
component AbzFreeRun is
Port ( i_clock : in STD_LOGIC;o_A:out std_logic:='0';o_B:out std_logic:='0';o_Z:out std_logic:='0');
end component;

component AB2CC_CCW
port (i_Clock: in std_logic;i_A_n,i_B_n: in std_logic;O_CCx1: out std_logic;O_CCWx1: out std_logic;O_iA_Alive: out std_logic;O_iB_Alive: out std_logic);
end component;
signal w_A :std_logic;
signal w_B :std_logic;
signal w_Z :std_logic;
signal w_CCx1 :std_logic;
signal w_CCWx1 :std_logic;
signal w_Hsync :std_logic;
signal w_Vsync :std_logic;
begin
AbzFreeRuninst: AbzFreeRun
Port map( i_clock =>I_Clock,
o_A =>w_A,
o_B =>w_B,
o_Z =>w_Z
);
AB2CC_CCWinst: AB2CC_CCW
port map(
i_Clock =>I_Clock,
i_A_n =>w_A,
i_B_n =>w_B,
O_CCx1 =>w_CCx1,
O_CCWx1 =>w_CCWx1,
O_iA_Alive =>open,
O_iB_Alive =>open
);
o_A <=w_A;
o_B <=w_B;
o_Z <=w_Z;
O_CCx1 <=w_CCx1;
O_CCWx1 <=w_CCWx1;

Zsync :process (i_clock)
begin
if rising_edge(i_clock) then
w_Hsync <=w_CCx1 or w_CCx1;
w_Vsync <=(w_CCx1 or w_CCx1) and w_Z;
o_Hsync <=w_Hsync;--このコンポーネントからの出力はレジスタ出力とする
o_Vsync <=w_Vsync;--このコンポーネントからの出力はレジスタ出力とする
end if;
end process ;
end Behavioral;


library IEEE;
use ieee.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;

entity AB2CC_CCW is-------------------------ɗ̓Zbg͎gȂ |C@ōs
port (
i_Clock : in std_logic;
i_A_n,i_B_n : in std_logic;------------FPGA ̓tHgJvŎM ڑ gŒ
O_CCx1 : out std_logic;
O_CCWx1 : out std_logic;
O_iA_Alive : out std_logic;
O_iB_Alive : out std_logic
);
end AB2CC_CCW;
architecture behavioral of AB2CC_CCW is
signal R_A_DL,R_B_DL : std_logic_vector(2 downto 0);
signal A_RiseEdji,A_FallEdji : std_logic:='0';
signal B_RiseEdji,B_FallEdji : std_logic:='0';
signal R_CCx1,R_CCx2,R_CCx4 : std_logic:='0';
signal R_CCWx1,R_CCWx2,R_CCWx4 : std_logic:='0';


signal R_CNT_B : std_logic_vector( 3 downto 0):="0000";
signal R_CNT_A : std_logic_vector( 3 downto 0):="0000";

signal R_CNT_B_UP : std_logic:='0';
signal R_CNT_A_UP : std_logic:='0';

signal w_Alive_B : std_logic:='0';
signal w_Alive_A : std_logic:='0';
signal w_Fltd_A_n : std_logic:='0';
signal w_Fltd_B_n : std_logic:='0';

component Filter
port (
I_Clock : in std_logic;
i_Enable: in std_logic;
I_Din : in std_logic;
O_Dout : out std_logic
);
end component;
component FreeRun
port (
I_Clock : in std_logic;
O_Dout : out std_logic
);
end component;
signal w_FreeRunTMUP : std_logic;
constant HIGH : std_logic:='1';

begin
FilterA_inst : Filter port map(I_Clock=>i_Clock,i_Enable=>HIGH,I_Din =>i_A_n,O_Dout => w_Fltd_A_n);
FilterB_inst : Filter port map(I_Clock=>i_Clock,i_Enable=>HIGH,I_Din =>i_B_n,O_Dout => w_Fltd_B_n);

FreeRun_inst : FreeRun port map(I_Clock=>i_Clock,O_Dout =>w_FreeRunTMUP );

DetectA_inst : Filter port map(I_Clock=>i_Clock,i_Enable=>w_FreeRunTMUP,I_Din =>R_CNT_A_UP,O_Dout => w_Alive_A);
DetectB_inst : Filter port map(I_Clock=>i_Clock,i_Enable=>w_FreeRunTMUP,I_Din =>R_CNT_B_UP,O_Dout => w_Alive_B);

process (i_Clock)
begin
if(i_Clock'event and i_Clock = '1') then


O_iA_Alive<=w_Alive_A;
O_iB_Alive<=w_Alive_B;
if w_FreeRunTMUP = '1' then
R_CNT_A <=(others =>'0');
R_CNT_B <=(others =>'0');
else
if R_CNT_A =X"F" then
R_CNT_A <=R_CNT_A;
R_CNT_A_UP <='1';
else
if A_RiseEdji = '1' or A_FallEdji ='1' then-----------------pX邱
R_CNT_A <=R_CNT_A + '1';
end if;
R_CNT_A_UP <='0';
end if;

if R_CNT_B =X"F" then
R_CNT_B <=R_CNT_B;
R_CNT_B_UP <='1';
else
if B_RiseEdji = '1' or B_FallEdji ='1' then-----------------pX邱
R_CNT_B <=R_CNT_B + '1';
end if;
R_CNT_B_UP <='0';
end if;
end if;
end if;
end process;



process (i_Clock)
begin
if(i_Clock'event and i_Clock = '1') then
R_A_DL <= R_A_DL(1 downto 0) & not w_Fltd_A_n;
R_B_DL <= R_B_DL(1 downto 0) & not w_Fltd_B_n;

A_RiseEdji <= R_A_DL(1) and (not R_A_DL(2)) ;
A_FallEdji <= not R_A_DL(1) and R_A_DL(2) ;
B_RiseEdji <= R_B_DL(1) and (not R_B_DL(2)) ;
B_FallEdji <= not R_B_DL(1) and R_B_DL(2) ;


R_CCx1 <= A_RiseEdji and (not R_B_DL(0));

R_CCWx1 <= A_FallEdji and (not R_B_DL(0));

O_CCx1 <=R_CCx1;
O_CCWx1 <=R_CCWx1;

end if;
end process;


end Behavioral;

さてこれから 面倒です バックラッシュでは Hsyncを出さないように改造していくことにしましょう
しかし 本日はここまで
posted by 有象無象 at 10:48| Comment(0) | TrackBack(0) | VHDL

【VHDL入門】速度比較 エンコーダーABZ相 ソースファイル付き

前回200Mhzで動作できるかみたいな スパルタン3E
 だから スパルタン6では どうかなと  
 結果は スパルタン3E 160Mhz動作OK ^^;
     スパルタン6  280Mhz動作OK らしい ^^;
周期5Nではだめってさ
惜しい5ns.png

スパルタン6では 3nSでもOKだそうだ えっ 300Mhzで動作できるの?ってさ
すぱ6余裕.png
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.all;

entity AbzFreeRun is
Port ( i_clock : in STD_LOGIC;--20Mhz
o_A :out std_logic:='0';-- 10khz
o_B :out std_logic:='0';
o_Z :out std_logic:='0'
);
end AbzFreeRun;

architecture Behavioral of AbzFreeRun is
type t_SM_Main is (Aup, Bup,ADown,BDown);
signal r_SM_Main : t_SM_Main := Aup;
signal B_StatUpdate : Boolean:=false;
signal Z_Flg : Boolean:=false;
signal i_StatUpdatecnt: integer:=0;
signal i_APluseCnt : integer:=0;

begin
ZtimgProcess :process (i_clock)
begin
if rising_edge(i_clock) then
if(B_StatUpdate) and r_SM_Main= Aup then
if(i_APluseCnt=36-1) then
i_APluseCnt <=0;
Z_Flg <= true;
else
i_APluseCnt <= i_APluseCnt +1;
Z_Flg <= false;
end if;
end if;
end if;
end process ;

process (i_clock)
begin
if rising_edge(i_clock) then
if(i_StatUpdatecnt=500-1) then
i_StatUpdatecnt <=0;
B_StatUpdate <= true;
else
i_StatUpdatecnt <= i_StatUpdatecnt +1;
B_StatUpdate <= false;
end if;
end if;
end process ;




abz_inst:process (i_clock)
begin
if rising_edge(i_clock) then
if(B_StatUpdate ) then
case r_SM_Main is
when Aup =>r_SM_Main<=Bup;o_A<='1';
if(Z_Flg) then o_Z <='1';else o_Z <='0'; end if;
when Bup =>r_SM_Main<=ADown;o_B<='1';
when ADown =>r_SM_Main<=BDown;o_A<='0';

when BDown =>r_SM_Main<=Aup;o_B<='0';
when others =>r_SM_Main<=Aup;
end case;
end if;
end if;
end process ;



end Behavioral;
posted by 有象無象 at 10:16| Comment(0) | TrackBack(0) | VHDL

2021年02月25日

【VHDL入門】ロータリーエンコーダABZ 出力のサンプル 200Mhz動作?

ここのところ簡単な VHDLサンプルつくって遊んでいます。  次の記事 https://fanblogs.jp/computersettings/archive/57/0では スパルタン3E と スパルタン6の比較しています。  じゃいったい どれぐらいの速度でるのか 遊んでみます。  ロータリーエンコーダーの ABZ作成なら アルテラでいうとサイクロンの2ぐらいの程度で  だからたぶん ススパルタン3E ぐらいかな 対抗馬まちがってたらごめん  試しに クロックのタイミングコンストレイントなしで 一番ちっこい スパルタン3E  のちっこいのを選択してみる。クロック5n 周期 つまり 200Mhzで動作する結果がでるだろうか?  古い遅い小さいサンプルでのテストだ。  スピードグレードを4を選ぶ 5を選ぶの違いだ  配置配線ほったらかし ただし ネットリストはハイアラキーぐらいはしておかないと  見えない
HDL Synthesis Report Macro Statistics # Counters :2 10-bit up counter :1 12-bit up counter :1 # Registers : 4 1-bit register : 4
iming Summary: --------------- Speed Grade: -4 Minimum period: 5.057ns (Maximum Frequency: 197.746MHz) Minimum input arrival time before clock: No path found Maximum output required time after clock: 4.310ns Maximum combinational path delay: No path found 簡単にいうと グレード5なら  Speed Grade: -5 Minimum period: 4.361ns (Maximum Frequency: 229.316MHz) Minimum input arrival time before clock: No path found Maximum output required time after clock: 4.063ns Maximum combinational path delay: No path found 200Mhzで できるらしい ほんまデッカ?  いやいや テストでは 数年前 スパルタン3Eで 250Mhzで 実力動作はした。  もちろん最後は200Mhzにしたのだが・・・ じゃ グレード4で どこまでレポート上は いけるのだろうか?  あれ エラーがでてこない? おかしいなぁ クロックの周期を3ナノで準備してみる。 300Mhzでうごけー という話だ。 めちゃだろうけど うごいてくれないらしい.png

2021年02月23日

【VHDL入門】UART 送受信繰り返しのテストベンチ作成してみたい

【VHDL入門】UART 送受信繰り返しのテストベンチ作成してみたい  実装後まにあうのか ということでテストです。  実装後というオプションがありますのでそれを使います。     通常のインプリメントができるようにします  シンセシスオプションで optmode は とりあえず speed です。 オプトレベルノーマル  キープ ハイアラキー  これやらないと なにがどこにあるのかわからなくなります。  ネットリストの ハイアラキー rebuilt にしておきます。  こんなところかな   あとは  デザインペイン なかの ラジオボタン implimentation simulaton のしむを選びます  そうしておいて POST ROUTE をえらんで  ごーーーーです  ここのところのUART のTX RXですが    実は もともとのの VHDLでは RXのほうが 早く終わってしまいます。    これは は TXが 送信終了 して DONE なのですが RXは最後の STOPビットが 立ち上がった瞬間に 終了するためです したがって 送信終了で 繰り返すことになります。    RXの終了で繰り返すみたいな シミュレーションにしてもいいのですが やっぱこれは 次の受信の準備は早い方がいいので このままです。 送信終了 での繰り返し込で 実装したいので 最上位のVHDLは次の通りです  オリジナルにはない パリティチェックは いれました。 
library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; entity UART is generic ( g_CLKS_PER_BIT : integer := 115 ; -- Needs to be set correctly g_bitlittleEndian : std_logic := '0' -- Needs to be set correctly ); port ( i_Clk : in std_logic; i_nRST : in std_logic :='1'; i_TX_stb : in std_logic; i_TX_Byte : in std_logic_vector(7 downto 0); o_TX_Active : out std_logic; o_TX_Serial : out std_logic; o_Parity : out std_logic; o_TX_Done : out std_logic; i_RX_Serial : in std_logic; o_RX_stb : out std_logic; o_Parityerr : out std_logic; o_RX_Byte : out std_logic_vector(7 downto 0) ); end UART; architecture Behavioral of UART is component UART_TX generic ( g_CLKS_PER_BIT : integer := 115 ; -- Needs to be set correctly g_bitlittleEndian : std_logic := '0' -- Needs to be set correctly ); port ( i_Clk : in std_logic; i_TX_stb : in std_logic; i_TX_Byte : in std_logic_vector(7 downto 0); o_TX_Active : out std_logic; o_TX_Serial : out std_logic; o_Parity : out std_logic; o_TX_Done : out std_logic ); end component; signal w_Parity :std_logic; component UART_RX generic ( g_CLKS_PER_BIT : integer := 115 ; -- Needs to be set correctly g_bitlittleEndian : std_logic := '0' -- Needs to be set correctly ); port ( i_Clk : in std_logic; i_nRST : in std_logic :='1'; i_RX_Serial : in std_logic; o_RX_stb : out std_logic; o_Parityerr : out std_logic; o_RX_Byte : out std_logic_vector(7 downto 0) ); end component; type C_SmLoopback is (Idle_st,Run_st,TurnAround_st ); signal SmLoopback : C_SmLoopback := Idle_st; signal Rtxdata : std_logic_vector(7 downto 0); signal Rtx_stb : std_logic; signal wtx_Serial : std_logic; begin UART_TXinst : UART_TX generic map (g_CLKS_PER_BIT) port map (i_Clk, i_TX_stb, i_TX_Byte,o_TX_Active,o_TX_Serial,o_Parity,o_TX_Done); UART_RXinst : UART_RX generic map (g_CLKS_PER_BIT) port map (i_Clk,i_nRST, i_RX_Serial,o_RX_stb,o_Parityerr,o_RX_Byte); end Behavioral;
 更にこれを シミュレーションします。  オリジナルにない けど i_nRST の非同期 リセットもいれています。 都合の話です。
library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; entity UARTLoopback is generic ( g_CLKS_PER_BIT : integer := 115 ; -- Needs to be set correctly g_bitlittleEndian : std_logic := '0' -- Needs to be set correctly ); port ( i_Clk : in std_logic; i_nRst : in std_logic; o_TX_stb_monitor : out std_logic; o_TX_Byte_monitor : out std_logic_vector(7 downto 0); o_TX_Active : out std_logic; o_TX_Serial : out std_logic; o_Parity : out std_logic; o_TX_Done : out std_logic; --i_RX_Serial : in std_logic; o_RX_stb : out std_logic; o_Parityerr : out std_logic; o_RX_Byte : out std_logic_vector(7 downto 0) ); end UARTLoopback; architecture Behavioral of UARTLoopback is component UART generic ( g_CLKS_PER_BIT : integer := 115 ; -- Needs to be set correctly g_bitlittleEndian : std_logic := '0' -- Needs to be set correctly ); port ( i_Clk : in std_logic; i_nRst : in std_logic; i_TX_stb : in std_logic; i_TX_Byte : in std_logic_vector(7 downto 0); o_TX_Active : out std_logic; o_TX_Serial : out std_logic; o_Parity : out std_logic; o_TX_Done : out std_logic; i_RX_Serial : in std_logic; o_RX_stb : out std_logic; o_Parityerr : out std_logic; o_RX_Byte : out std_logic_vector(7 downto 0) ); end component; signal w_Parity :std_logic; type C_SmLoopback is (Idle_st,Run_st,TurnAround_st ); signal SmLoopback : C_SmLoopback := Idle_st; signal Rtxdata : std_logic_vector(7 downto 0):=(others =>'0'); signal Rtx_stb : std_logic; signal Rrx_stb : std_logic; signal wTxDone : std_logic; signal wtx_Serial : std_logic; begin UARTinst: UART generic map(g_CLKS_PER_BIT=>g_CLKS_PER_BIT, g_bitlittleEndian=>g_bitlittleEndian ) port map( i_Clk => i_Clk, i_nRst => i_nRst, i_TX_stb=>Rtx_stb, i_TX_Byte=>Rtxdata, o_TX_Active=>o_TX_Active, o_TX_Serial=>wtx_Serial, o_Parity=>o_Parity, o_TX_Done=>wTxDone,--o_TX_Done, i_RX_Serial=>wtx_Serial, o_RX_stb=>Rrx_stb,--o_RX_stb, o_Parityerr=>o_Parityerr, o_RX_Byte=>o_RX_Byte ); o_TX_Byte_monitor<=Rtxdata; o_TX_stb_monitor <=Rtx_stb; o_RX_stb<=Rrx_stb; o_TX_Done<=wTxDone; process (i_Clk,i_nRst) begin if i_nRst='0' then SmLoopback<=Idle_st; elsif rising_edge(i_Clk) then case SmLoopback is when Idle_st => SmLoopback<=Run_st; Rtx_stb<='1'; when Run_st => Rtxdata<=Rtxdata+'1'; Rtx_stb<='0'; SmLoopback<=TurnAround_st; when TurnAround_st => Rtx_stb<='0'; if(wTxDone='1') then SmLoopback<=Idle_st; end if; end case; end if; end process; o_TX_Serial<=wtx_Serial; end Behavioral;
いよいよ 実装後のRUNです。 あとであんがつく 彼岸のぼたもちですが  送信のモニタが 2つ進んでいるように見えます。  送ってるのを 出せば良かったかも 送ったら 変化させたのでこんななっちゃいました。 仕方なく 送信中のデータを むりくり表示すると  ピッタリです。 実装後シミュレーション全体.png 実装後シミュレーション.png 今日のところは ここまでです。    
posted by 有象無象 at 23:00| Comment(0) | TrackBack(0) | VHDL

【ノイズ対策】無知な会社がおおいなぁ

 ノイズ対策グッズなど フェライトコアと電線だけで全部できるのに!
  ダクトも シールド線も 必要ないということです。
 あ そうだ シールド線は 特殊な用途で つかうことがあったな

最近見た会社 どの会社もノイズ対策の重鎮が存在していて みんな意見が異なるのがおもしろい
笑っちゃうぐらい たちが悪いやつが仕切ってることがある。

 結論は いかだらだらを書いた記事を見た人にしかつたえるきがない のが私の特徴だ。
 それも 読み取る人にしか 知らせる気がない けったいな文章ですまぬ ^^;
  ただ いろいろな会社をわたりあるいて みて 

   ノイズに困っている会社、ノイズに困っていない会社、 ローノイズ設計ばかりしている会社

  このこの三種類の 設計の特徴を これからゆっくり語る。
 そもそもここを見てる段階で
   ノイズに困ってる部類にもかかわらず 
   自分のノイズ対策のほうがすぐれていると考えているタイプの人が対象です。


 別に ネットの 検索上位をねらってるわけではないので 結論など最後だ。
 真面目に勉強するきのない人など とっとと失せろ ^^; にどとくるな ^^;
 もちろん 自分のほしい結論があって 結論が正しいとおもってそのサイトにとどまるなら
 その人に進歩はない。 ノイズ対策に関する慰めをもとめているだけだから そんな人に事実をつたえるきなどさらさらない。 ここはわらうところです。

 まさか私が しっかりアースとか アースループを切れとか 言うとおもいますか?
 そんな慰めがほしい人にはいいサイトがありますので GOOGLE先生にききましょう

GOOGLE上位に検索されるサイトに
分離する/しない のどちらが良いとは一概には言えません。


 という ありがたい 教えがあります。 ありがたやありがたや ^^;
ベタアースが良いと いったり その舌の根も乾かぬうちに 一点アースといいだします。
 もう 笑うしかないです ほんと たちが悪いですね。

 へんな説明に二分のイチ波長のパタンが電波を出しやすいとか なにいってんだか と思うのは普通のセンスだと思います。
 放射インピーダンスが例えば1オームでも ノイズ原の内部インピーダンスが限りなくゼロに近いなら 十分電波でます。 二分のイチ波長とか 4分のイチ波長とかは 放射インピーダンスが手頃だから といういみしかありません。 誤解だらけのようです。

アースループだってそうです。 大事なのはアースループのあるなしではなく アースループに起電力をあたえなければ出しません。(ループがあれば 外乱を受けやすいことは私は当然知っています)
電磁版の可逆性 も同時に検討すべきですが 鉄が絡むと 不可逆的になることもあります。 近傍の鉄の存在も考慮しなければならないときも当然あります。けどなんとなくわかるじゃないですかぁ


原理はめちゃくちゃ単純で 
1 絶縁してるところにノイズはこない 
2 絶縁してると 静電気が貯まる 
3 アースは保安のためにおこなう
4 アースはノイズの大元である。
5 オンボード絶縁型スイッチング電源は 結構ノイズが通過する事実がある
6 電気は亜光速で移動するため 相対性理論の対象である。

こんな単純な話なのに
  グランドのとり方が どうの 10人10色
 私みたいに いろいろな会社わたりあるいてると

例プリント基板の アナログ デジタルGNDのつなぎ方など


これって 結構賛否両論あるのですが 答えは実にシンプルです。
 https://www.analog.com/media/jp/training-seminars/tutorials/MT-031_jp.pdf
 私のいうことなど信じなくても良いのですが 老舗の アナログデバイセズ社の意見は さっきのPDFにあります。 要するにメーカの説明書をろくに読まずに あーだこうだ いうエンジニアが多すぎるのです。
 ただし 前提条件があって アナログデバイセズの言い分は コモンモードノイズにさらされてないときの話です。 周辺設計がでたらめな会社が このアドバイスにしたがったところでノイズまみれになります。そういう単純な話です。 例をあげますので 考察してみてください。

  例えばだが プリント基板の アナロググランドとデジタルグランドもなしにベタグランドが有効と豪語する人がいて その人がご丁寧に 特定の基板 の AG DG 分離した基板と ベタにした基板を
それぞれ つくって 評価した結果が 誇らしげに 社外秘資料にかかれていた。

  もちろん 同じような実験をした別の会社でも 同じような資料がある。

 そして この2つの会社の結論は 真逆であった。

 そして 
  それぞれ 伝統的に AG とDGを 明確に分離して 好結果をだしている会社と
  それぞれ 伝統的に AG とDGを ベタにして   好結果をだしている会社と
 2種類存在するのも 私はしっている どちらも にたような基板をつかって
  実験して 答えが 真逆の 実験結果をだしている。

 え わたし わたしはーー どっちにするかって  雇ってくれた方の意見に合わせます。
 重鎮にさからうと 実入りが減るので ・・・ とうぜんだろう

 ここにきた 人に特別に事実を おしらせしよう。 当然上から目線です。^^;
わらってこらえてください。 

1   AD DG を キチンと分けて  基板の端っこのほうで AD DGをフェライトビーズとか でつないいる タイプの 設計の会社 だが 
  おおむね 電源からのノイズが多い会社が これをやって好成績をだしている。
  なんどやっても 分離したほうが いいという経験則 になっていき ついにこれが社内規格がされていく  こうなると  つける薬がない

2 AD DGを ドベタ でつなだ ほうが 基板のノイズ特性がよいという会社
  このタイプの会社は  電源のアースとか 電源のフィルタなどが きちんとされているケースが多い
  
3 ちょっと毛色がちがうが AD DGを パタンとしては 完全分離を行い
   CADのデータで  なんとよぶのだろう ショートさせるが ネットは分離させる部品 ? 基板のパタンは ガーバーデータ上では つなぐが ネットリストとしては 分離するような部品をおいているルールの会社がある。  これは 本気のローノイズ設計の会社に多い。 GNDにも スリットが入ってることがある。
  例えば PLL フィルタみたいな GNDは 周りを堀で 囲ってつないでいるようです。
  こんな 会社は 電源も アースも 絶縁シートも きちんといれている。
  スイッチング電源も 廉価なものと 高絶縁 高コモンモードノイズ絶縁を 適材適所にえらんでいる。
  コネクタ配置も 基板右から入力 左に 出力 なんて 設計は稀にしかみない。
  たいていは   基板右から入力 右に 出力 なんて 入出力が片側に集中している。
  なるほど  基板のなか全体に コモンモードノイズが通過するのを嫌っているなと すぐにわかる。


ここまでで 自分がどのタイプの ノイズでこまってるかがわかると思う。

 プリント基板を例にだしたけど  大きな装置でも同じことです
 大きな装置では より 低い周波数でも 反射の影響がみえてきます。

 ひどい場合には  ノイズ対策のための ダクトに わけのわからない 垂れ流し電流をながして 
 装置全体に  ダクトから ノイズをまきちらしている ものがあります。
 
  ノイズ対策のダクトを ノイズ放射のアンテナとして 再利用している 効率的な会社も いくつかみてきました。

  このような会社にも ノイズ対策の重鎮が 存在しており その人のつるの一声 があるため 一向になおらない という 悪循環です。 だれが何をいっても ごっついアース 複数箇所の 接触抵抗たいさく
  大量の 銅の ご購入 ありがとうございました  以上 という会社があるようです。

 



















2021年02月20日

【アトミックパイ】ライブCD自分モディファイでうごいた イヒッ

作業が遅れて やっと動いた アトミックPI  ただねぇ アトミックPIのロゴが 怖い まぁ いいだろう。  コネクタにいきなり電源ハンダ付けしてやったのだ。 そして  このアトミックパイ 都合がいいことに USB3のハブをつないでもそのさきにブートUSBつないでも きちんと動く こりゃいいや 結構いいバイオスはいってるらしい   数日前に https://fanblogs.jp/computersettings/archive/50/0 でつくった自分カスタマイズの  フェドラ ISO を 今回USBに書き込み  うごかしてみた 手順は こうだ    スクリーンショット_2021-02-20_22-16-08.png  あの長ったらしい 手順を スクリプトでいくらか区切ってみたのが見えるが気にしないでね  ここで我輩ようにつくったのが Fedora-Xfce-Live.iso  だ これを USBを 例の如く  fdisk /dev/sdb   みたいな呪文で 8GほどパーテーションをFAT でつくり ブートのアクティベートフラグをたてておく  そしたら  [root@localhost Fedora]# livecd-iso-to-disk Fedora-Xfce-Live.iso /dev/sdb1 Verifying image... こんな感じ ただし まんまでは動かないので 予め boot オプションというか カーネルオプションで SELINUXを とりあえず 止めておく 前回つくった LIVECDIMG フォルダのしたの EFI とか isolinux のなかのカーネルオプションをさがして おいて 例えばquiet とか けして enforcing=0 と入れておく 何箇所かあるが 同じ要領だ。 そして 書き込む アトミックパイは EFI の方だとおもうので こちらをモディファイする。 EFI/BOOT/grub.cfg だったと思うこれを それっぽく 編集する。 こうしておいて LANG=C mkisofs -v -r -J -l -input-charset utf-8 \ -V 'Fedora-Xfce-Live-32-1-6' \ -cache-inodes \ -b isolinux/isolinux.bin \ -c isolinux/boot.cat \ -no-emul-boot \ -boot-load-size 4 \ -boot-info-table \ -o Fedora-Xfce-Live.iso \ ./LIVECDIMG LANG=C implantisomd5 Fedora-Xfce-Live.iso livecd-iso-to-disk Fedora-Xfce-Live.iso /dev/sdb1 を実行すると 時間がかかるが できる  退屈なので コブラでも みてひまをつぶす できた   よくわからんのだが 動いた  修正は いちど マルチモードで起動しておいてから /run/initramfs/  のどっか 変更すると あれだ カーネルオプションが変更できる  あらかじめ変更する方法がわからないのですが とりあえず ライブCD というか ライブDVDというかで 起動できた   今後予めの 変更方法を調査する  ライブ動作なので 電源を ぶちっときっても 多分だいじょうぶ だ。 予めgoogle chrome をインストールしてから つくってみようかな   では 今日はこれで失礼します。

アトミックパイ うごいた

IMG_20210220_135043245.jpg 私が フェドラ系 しかつかったことがないので こまった 操作ができない  おじちゃんは ちょっとちがうとさっぱりだめなんだなこれが   それと これ普通のインストールされているので (ライブじゃないので) 電源突然 引っこ抜くを繰り返すと 傷んでくる。  

2021年02月19日

1ボード PC と あああああああ はんだこて すてちまったガーーン

電子工作なんかするもんか と思っていろいろ捨てたが なんとはんだごて すてちまってた ガーン
IMG_20210219_230554773.jpg

 どっちがいいか よーくかんがえよーっと 
 ラズパイ VS アトミック PI  だ どっちがいいかな と思いつつ かってみた

 アトミックPIは なんと 86系だ。命令セットは 64ビットだそうだ これも試してみよう
 ここ最近 https://fanblogs.jp/computersettings/category_9/ 
に ライブ LINUXの 記事書いたが これで USBに書き込みをしてみる。
電源は USB の5Vの3A を用いる 
  アトミックPIの 電源は ミルコネクタから供給するのだが それも家にはないので ハンダ付けで 供給しようかと思ったのだが・・・  はんだごてすててしまって がっかり 明日 ホームセンター に買いに行こう そして つないで みようかな 今日は ここまで 明日 電源つないでみよう


2021年02月17日

今後のこと ワンボードPCに ライブタイプのLINUXを搭載してあれしてこれして

今後のこと ワンボードPCに ライブタイプのLINUXを搭載してあれしてこれして  ワンボード マイコンに CDブートみたいな 独自LINUXを搭載します。  たとえば そこから FPGAをコンフィグしたりするのをつくっていきます。  だんだん人手不足のよのなか  FPGAの書き込みになんとかブラスターを 一個一個つなぐのは大変です。 ネットワークにつないで FPGAもアップデートしたいなぁ  しかたなく やっていきます。     
×

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