X



トップページ電気・電子
1002コメント353KB

【Verilog】 記述言語で論理設計Project14 【VHDL】 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
0001774ワット発電中さん
垢版 |
2016/08/08(月) 08:14:48.93ID:Lhv7D4dX
HDLの処理系も、それを実際に動かすシミュレータ・評価基板も、
安価で入手できるようになってきました。

このスレが目に入ったお嬢さん! HDLで何か作って遊んでみませんか。
日曜工作のHDL書き、学生さん、プロの方、主婦の方、カキコお待ちしております。
関連情報は >2-10 あたり。

入れ食いキーワード
・Nios、MicroBraze
・Artix-7、Kintex-7、Virtex-7、ハードコアCPU内蔵 Zynq-7000

前スレ (直近スレのみ)
2012/11/03〜 【Verilog】 記述言語で論理設計Project12 【VHDL】
http://uni.2ch.net/test/read.cgi/denki/1351913871/
2011/12/07〜 Project11
http://uni.2ch.net/test/read.cgi/denki/1323187568/
2010/09/17〜 Project10
http://kamome.2ch.net/test/read.cgi/denki/1284652343/

※前スレ
http://rio2016.2ch.net/test/read.cgi/denki/1394091422/
0615774ワット発電中さん
垢版 |
2017/03/09(木) 11:45:10.26ID:m4sIxwWh
>リレーでFF
って、どういう接続にすればいいんでしょうか。
レーシングしてしまうような気がする
0616arisa ◆QaHT6HayjI
垢版 |
2017/03/09(木) 12:06:16.48ID:lX1kOWlp
>>614
入学式と卒業式と、
3人の会社の時に准教授の産学共同研究して学食おごってもらったけど。
東工大に入っているね。燕
0619774ワット発電中さん
垢版 |
2017/03/09(木) 21:22:07.11ID:CVBAvCSj
>617
直ぐに諦めるだろ。そういうところが駄目なのよ。
俺は方法を見つけたぜ。
0621774ワット発電中さん
垢版 |
2017/03/09(木) 23:39:24.48ID:fNFhmZrr
>>615
リレー回路をやってなかったので詳しくはないんだが、昔のクロスバ交換
機ではワイヤスプリングリレーというのが使われていた。
このリレーはEBM接点(Early Break Make,3点接触あり)とかEMB接点(Eealy
Make Break,3点接触なし)とか接点の動作タイミングがきちんと規定され
ていて、ダイヤルパルスのカウントをやったりしていた。
こういうリレーを使えばうまくいくのではないかな。
0623774ワット発電中さん
垢版 |
2017/03/10(金) 03:55:47.12ID:Rg1UHDg9
>620
ロジアナは不要だ。さあどうやってやる?w
0625774ワット発電中さん
垢版 |
2017/03/10(金) 05:03:36.81ID:Rg1UHDg9
お前が使わない頭を使え
0628774ワット発電中さん
垢版 |
2017/03/11(土) 08:09:11.21ID:nu/rVLNU
FPGAではいかにしてデバッグするかというのがとても大事だ。特にRTLレベルで完全に
問題を潰しておくことが重要なのだが、RTLレベルで完全にやっていても
実機になると、見落としがあったりしてある程度の変更はでてくる。その場合には
RTLに戻って再度デバッグをしたりはしないでそのままコードを書いて追加していく。
そういう時に思わぬコードミスが発生する。
 このような場合に通常のソフト開発にありがちなアジャイルな方法、方法という
よりはこのような精神、つまりは「とにかくやってみて、、、」というような精神態度
ではドンドンミスが発生する。
 なぜならVerilogは文法も稚拙だがコンパイラのできが非常に悪いので一般的な
コンパイラが発見してくれるようなミスが潜り込んでしまうからだ。
 追加の場合には、うろ覚えで追加することは絶対に避ける。100%確実な
コードのみを追加する。もし少しでも文法やコードに自信がないなら、動作している
コード例と比較して確実に動作するコードを書くようにして憶測でコードを追加しない
ことが重要だ。
0630774ワット発電中さん
垢版 |
2017/03/11(土) 08:53:06.39ID:nu/rVLNU
VHDLでもバグは同じレベルであるんじゃない?
0631774ワット発電中さん
垢版 |
2017/03/11(土) 08:55:07.28ID:nu/rVLNU
糞ツール二つもおぼえらるかよ。w
0632774ワット発電中さん
垢版 |
2017/03/11(土) 09:34:44.67ID:jAldiWjH
>なぜならVerilogは文法も稚拙だがコンパイラのできが非常に悪いので

って自分でかいてるだろ。
少なくともVHDLのほうが厳密に書けるんだからさ。

コンパイラ(って合成ツールのことだよね?)は何使ってるの?

文法チェックならLintツール使えよ。
0635774ワット発電中さん
垢版 |
2017/03/11(土) 12:51:01.77ID:l25Ek4/z
VerilogのLintってあるんか?
0636774ワット発電中さん
垢版 |
2017/03/11(土) 12:54:18.60ID:l25Ek4/z
 教科書を見てて思うんだが、パルスで起動する場合にエッジを取るボケが多いな。
最初から微分しとけや!アフォって思うな。Moduleのなかでいちいち微分する奴は
アフォだろ。
0637774ワット発電中さん
垢版 |
2017/03/11(土) 12:55:24.54ID:l25Ek4/z
>632
Primeだけど
0638774ワット発電中さん
垢版 |
2017/03/11(土) 12:58:47.24ID:l25Ek4/z
>少なくともVHDLのほうが厳密に書けるんだからさ。

Verilogですら冗長コードがあるのにVHDLとか「なんだよ、この糞っぷりは」
っておもうぞ。冗長コードのウンコの山だろ。w
話にならん。
0639774ワット発電中さん
垢版 |
2017/03/11(土) 13:02:20.72ID:l25Ek4/z
最近嵌ったのは
reg buf[7:0] ;

[]の位置を間違うんだよな。これはエラーが出ないんだよな。あとスペルミスして
ても知らんぷりでエラー出さないんだよな。w
0641774ワット発電中さん
垢版 |
2017/03/11(土) 13:08:10.19ID:l25Ek4/z
SVHDL :Shit Very Hard Design Ludicrous
0642774ワット発電中さん
垢版 |
2017/03/11(土) 13:11:19.22ID:6+nzxtFU
ソフトは上から下まで凄いいろんな種類があるけど、ハード記述言語はあまり進歩がないねえ
頭も固いのか?
0644774ワット発電中さん
垢版 |
2017/03/11(土) 13:16:15.41ID:FOkgUmfr
>>642
言語もシミュレータもトランスパイラもいろいろあるでしょ
大手がそれを取り込まないから誰も使わないだけで
で誰も使わないからコストかけて取り込めない
0645774ワット発電中さん
垢版 |
2017/03/11(土) 13:19:10.66ID:l25Ek4/z
>厳密さと冗長さって全く違う概念

コード量が増えるというのはコードノイズが増えるってことだ。だから厳密性が
無茶苦茶劣るということだ。
厳密なものは、シンプルで美しい。間違いが少ないし、当然間違いが入り込みにくい。
したがってVerilogの方が糞でもかなりマシ。

ユークリッドの第五公理でもわかる。この部分だけ美しくない。必然的にここから
ユークリッド幾何のボロが出たということだ。

1.任意の一点から他の一点に対して直線を引くこと
2.有限の直線を連続的にまっすぐ延長すること
3.任意の中心と半径で円を描くこと
4.すべての直角は互いに等しいこと
5.直線が2直線と交わるとき、同じ側の内角の和が2直角より小さい場合、その
2直線が限りなく延長されたとき、内角の和が2直角より小さい側で交わる。
0646774ワット発電中さん
垢版 |
2017/03/11(土) 13:20:34.84ID:l25Ek4/z
>642
うまいこというなー。感心した。w
0647774ワット発電中さん
垢版 |
2017/03/11(土) 13:21:11.13ID:FOkgUmfr
あとソフトの開発ツールが百花繚乱なのはやっぱりお手軽さが違うよね
とりあえずJavaScriptかJVMかllvmに落としておけばなんとかなるみたいな
0648774ワット発電中さん
垢版 |
2017/03/11(土) 13:24:48.76ID:l25Ek4/z
>それはそうと default_nettype も検討したら?

始めて知った。noneにしておいたほうがいいな。

モジュール間接続をしたネットを上位にOUTPUTする場合は頻発するが、名称を
wire 宣言をするとOUTPUT名称を変更しないと2重定義でコンパイルエラーになる。
しかし定義を省略すると接続できる。しかし接続できてもバス配線の場合には不具合
が出る。しかしViewerでは正常に配線されていてコンパイラはエラーもワーニングも
ださない。(多分)
0649774ワット発電中さん
垢版 |
2017/03/11(土) 14:00:13.17ID:cKQVGECZ
>>640
俺もこの意見に一票
0650774ワット発電中さん
垢版 |
2017/03/11(土) 14:24:31.98ID:H5Knxuvp
signal 宣言一つで reg or wire 双方への推論を許してる
何処が厳格なんだよ
0651774ワット発電中さん
垢版 |
2017/03/11(土) 15:05:55.65ID:jAldiWjH
>>650
FFになるかwireになるかなんて本来は関係ないはず。
reg だからって必ずしも FF にはならないだろ。
0653774ワット発電中さん
垢版 |
2017/03/11(土) 18:20:10.70ID:H5Knxuvp
言うだろうと 思ってたよ

reg -> wire は有っても、その逆は無い
そもそも、case 分で書いたほうがスッキリするから
敢えて、助長縮退を意図した書き方を許してるだけだ

自称 厳格、それ以外にとり得がない
同じ物を書くと、コード量2〜3倍ぐらいになる

唯々文句言ってるやつよりはマシそうだが
両方やって、比べた上で言えよ
0657774ワット発電中さん
垢版 |
2017/03/12(日) 09:48:19.81ID:dCAFLPxG
GPUでさえ汎用言語ではダメで、CUDAとかOpenCLが必要なんだから
より並列性の高い言語を作らないいかんな。
できればFORTRAN66をベースに。
0659774ワット発電中さん
垢版 |
2017/03/12(日) 14:28:35.76ID:dpRAG//J
>>657
いいたいことはいろいろあるが
今現在、最もGPUを酷使するアプリはpythonで書かれているという事実がある
0660774ワット発電中さん
垢版 |
2017/03/12(日) 15:55:21.19ID:SmxcaBUa
最もGPUを酷使するアプリって何だよwww
俺が作った、全ユニットフル稼働のテストツールより酷使するアプリなんてあるか?
0661774ワット発電中さん
垢版 |
2017/03/12(日) 16:02:17.08ID:dpRAG//J
>>660
お前のアプリは所詮お前のハードでしか動かない。
世界中のGPUが必死に何の計算してるかと言う話だから、
お前のチンケなアプリはの話はどうでも良い
0664774ワット発電中さん
垢版 |
2017/03/12(日) 19:57:33.97ID:wamYpz0C
>>659
コード書けない層ほど中身のないAIに飛びつくから。よってまともな成果は出せないだろう。
0665arisa ◆QaHT6HayjI
垢版 |
2017/03/13(月) 09:30:10.08ID:NVSCvOah
VHDLをやりもしないで、クソ扱いはクソワロタシテロ。小一時間草でも植えておけ
0666774ワット発電中さん
垢版 |
2017/03/13(月) 09:50:35.51ID:TcShF5sa
コード比較
-----verilog-----
module mod_a (
input clk,
input rst_x,
input [7:0] i_in,
output reg [7:0] o_out
);
always @(posedge clk or negedge rst_x) begin
if (~rst_x) o_out <= 8'h0;
else o_out <= i_in;
end
endmodule

----- 糞VHDL -----
library IEEE;
use IEEE.std_logic_1164.all;

entity mod_a is
port (
clk : in std_logic;
rst_x: in std_logic;
i_in : in std_logic_vector(7 downto 0);
o_out : out std_logic_vector(7 downto 0)
);
end mod_a;

architecture rtl of mod_a is
signal r_out : std_logic_vector(7 downto 0);
begin
process (clk, rst_x) begin
if (rst_x = '0') then
r_out <= (others => '0');
elsif (clk'event and clk = '1') then
r_out <= i_in;
end if;
end process;
o_out <= r_out;
end rtl;
0667774ワット発電中さん
垢版 |
2017/03/13(月) 09:56:02.03ID:lnX5PfRP
Verilogの方が冗長なのは事実だけど、それだけでVHDLを
否定をしてる人は単にプログラミングに対するセンスが
ないんだと思うよ
0668774ワット発電中さん
垢版 |
2017/03/13(月) 10:08:04.19ID:vtrmK3ql
具体的なコードを明示した上で比較したヤツ
それを、抽象的な物言いだけで否定してるヤツ

技術者の端くれなら、具体的な利点を示した上で反論しろよな
0670arisa ◆QaHT6HayjI
垢版 |
2017/03/13(月) 10:38:06.98ID:NVSCvOah
固定小数点演算のかけ算機を、verilogでつくれば、VHDLよりverilogがクソなのが理解できるだろ。草植えるのマダカヨ
0671774ワット発電中さん
垢版 |
2017/03/13(月) 10:39:09.41ID:TcShF5sa
冗長というよりゴミだろ。VHDLとかほぼゴミで埋もれる。
0672774ワット発電中さん
垢版 |
2017/03/13(月) 10:40:34.35ID:TcShF5sa
>670
具体例をあげてみな
0673774ワット発電中さん
垢版 |
2017/03/13(月) 10:42:18.06ID:TcShF5sa
c[16] = a[8] x b[8];
こんなん?
0674774ワット発電中さん
垢版 |
2017/03/13(月) 10:48:16.16ID:TcShF5sa
掛け算ならfloatだろうが、intだろうがライブラリを使うだろ。
VHDLのライブラリアクセスがどんだけめんどくさー――――いか。殆どゴミコード。
0675774ワット発電中さん
垢版 |
2017/03/13(月) 11:16:49.46ID:IBkOjaQd
掛け算くらいツールが合成してくれるよ。
ライブリって何?FPGAの?
0676arisa ◆QaHT6HayjI
垢版 |
2017/03/13(月) 11:24:52.92ID:NVSCvOah
何コイツ無職?おまけにサイコパスっぽい。
ひょっとして、元ルネサス?
0678774ワット発電中さん
垢版 |
2017/03/13(月) 12:11:10.00ID:TcShF5sa
>675
そうなの? フロートはレイテンシの調整とかがめんどくさいので使った記憶が
あるが、整数は使った記憶がねえよ。記憶に残らんほど簡単ってことか。
0679774ワット発電中さん
垢版 |
2017/03/13(月) 12:12:06.71ID:TcShF5sa
固定小数点って言葉自体がバカっぽいな。ただの桁合わせのことだろ。W
0680arisa ◆QaHT6HayjI
垢版 |
2017/03/13(月) 12:13:30.74ID:NVSCvOah
何コイツ無職?おまけにサイコパスっぽい。
ひょっとして、元ルネサス?
0681774ワット発電中さん
垢版 |
2017/03/13(月) 12:28:23.20ID:TcShF5sa
画像処理とか実数演算を固定小数点で高速化して自慢したいんだろ。w
馬鹿の典型だな、そんなのがひつようなのは0.0001%もねえよ。
Floatでやっても高速化できるんだから、Floatのほうがいいんだよ。設計変更での
柔軟性が高いしな。
 馬鹿がいて固定小数点で作りやがって、一寸変更かけると「できません」っていう。
0682arisa ◆QaHT6HayjI
垢版 |
2017/03/13(月) 12:44:11.74ID:NVSCvOah
何コイツ無職?おまけにサイコパスっぽい。
ひょっとして、元ルネサス?
0683arisa ◆QaHT6HayjI
垢版 |
2017/03/13(月) 12:45:49.62ID:NVSCvOah
何コイツ無職?おまけにサイコパスっぽい。
ひょっとして、元ルネサスの手配師でしょ。技術的な中身無さそうだし。
0684774ワット発電中さん
垢版 |
2017/03/13(月) 13:39:32.12ID:I3cC7+xc
VHDL推しは一定の理解はするが人格攻撃始めたら賛同者なくなるよ
0685arisa ◆QaHT6HayjI
垢版 |
2017/03/13(月) 13:47:44.70ID:NVSCvOah
>>684
スマンナ。ほんままんどくさいんだわ。大手半導体にいるひとたち
0686774ワット発電中さん
垢版 |
2017/03/13(月) 16:37:29.36ID:bDMDo5rn
>>685
何があったん?
0689774ワット発電中さん
垢版 |
2017/03/13(月) 20:44:20.23ID:j3VzIVSk
>>666
行数が短いから言語として優れてるって言いたいのかな?
ハードを記述してるって感覚がないだけに見えるけど。
0695774ワット発電中さん
垢版 |
2017/03/14(火) 01:23:11.42ID:e2V44vhC
なるほど
となるとRTLを書くとは具体的な作業としてはどういうものになるんですかね
0696774ワット発電中さん
垢版 |
2017/03/14(火) 02:31:37.88ID:G/ANrYqO
>ハードを記述してるって感覚がないだけに見えるけど。

どんな感覚だよ。
まずHDLの基本が糞だよな。

非同期リセットの書き方
always @(posedge clk or negedge resetn)
if(resetn)
dff <= 0;
else
dff <= dff + 1;

これがどーーーーーんだけ糞な書き方か意味わかる。
「非同期」だってのに何で同期回路と混在するんだよ。馬鹿じゃないか。
この時点で言語として破綻してる。
negedge resetn ぷっ 笑える。これは馬鹿ってレベルじゃなくて糞馬鹿。

>rtl書いてる時間なんて全体の1割未満だもんな

だから問題なんだろ。今度RTLを使うのは何か月後だろうか?
偶に使うツールほど扱いが難しい。使い方を忘れるからな。
modelsimも糞だよな。ほんと覚えにくい。毎回立ち上げ時に苦労する。
0697774ワット発電中さん
垢版 |
2017/03/14(火) 03:03:40.04ID:vsj/GB83
いいじゃん、非同期resetなんか使わないんだから。
0698774ワット発電中さん
垢版 |
2017/03/14(火) 03:35:48.29ID:2HaNs33y
>>696
そもそもこの場合の非同期ってのは、クロックに同期してないって程度の意味だろ?

実際にはreset信号に「同期して」リセットさせるんだから
書き方的には問題なくね?
0699arisa ◆QaHT6HayjI
垢版 |
2017/03/14(火) 04:11:34.74ID:Cac2rFqg
なんか、ニッポンの半導体産業他の崩壊を今目のあたりにした希ガス
0700774ワット発電中さん
垢版 |
2017/03/14(火) 04:15:25.91ID:G/ANrYqO
always @(posedge clk)
if(~resetn)
dff <= 0;
else
dff <= dff + 1;
これがVeilogの同期リセットの書き方だよ。
RTL Viwerで比較して見てごらん。
0701arisa ◆QaHT6HayjI
垢版 |
2017/03/14(火) 04:24:54.08ID:Cac2rFqg
同期リセット 非同期リセット
をFPGA ASIC にて、トランジスタレベル(CMOS)
の回路図を検討し、その2*2の利点・欠点を
一覧にし、考察をすること。
0702774ワット発電中さん
垢版 |
2017/03/14(火) 05:01:25.33ID:G/ANrYqO
>いいじゃん、非同期resetなんか使わないんだから。

単純リセットのための同期リセット使うとという意味なら、それは誤りだ。
同期リセットはリソースをかなり消費する。
非同期リセットを使った方がいい。
デバイスがPowerONリセットを用意しているから不要。単純リセットは省略する。
というのなら意味は解る。
でもじゃあシミュレーションで真っ赤っかになるのをどうすんの?ってことになる。

Force the FFs/registers to reset by using the ModelSim force command.
コードに書かないとしたらやり方としてはtclでこいつを叩くのかな? 
やったことないが、、
0703774ワット発電中さん
垢版 |
2017/03/14(火) 05:02:51.29ID:G/ANrYqO
-----verilog-----
module mod_a (
input clk,
input rst_x,
input [7:0] i_in,
output reg [7:0] o_out
);
always @(posedge clk or negedge rst_x) begin
if (~rst_x) o_out <= 8'h0;
else o_out <= i_in;
end
endmodule

例えばこの例だと、
★致命的な間違い
 1.iolistでグローバルのclk,rst_xとi_inの混在は問題。
同じスタイルで書くのは良くない。かなり致命的間違いだ。
 2.非同期リセットのnegedge rst_xこの書き方も致命的欠点

 まず致命的欠点だけでも解決するなら
-----verilog-----
module mod_a (input [7:0] i_in, output reg [7:0] o_out);
always @(posedge clk ) begin
 o_out <= i_in;
end
endmodule
本体はこれだけになる。
0704774ワット発電中さん
垢版 |
2017/03/14(火) 05:03:40.89ID:G/ANrYqO
★しかし”always @(posedge clk ) begin ”この記述は何も中身がない。なので削る。
-----verilog-----
module mod_a (input [7:0] i_in, output reg [7:0] o_out);
 o_out <= i_in;
endmodule

グローバルどうすんの? って
*.(clk,clrn) = clk,rst_x;
でいいだろ。
ネガティブエッジは? って
 .clknだな。
0708774ワット発電中さん
垢版 |
2017/03/14(火) 07:40:18.21ID:G/ANrYqO
>arisa君
理屈をつけて説明する癖をつけなさいね。
理屈なしににやにや笑ってみたり、嘆いてみたり、思わせぶりに批判するのでは、
力がつかないよ。

 何故理屈がつけられないのか? それは意見に自信がなくて、間違いが怖いから
でしょ。
言い訳の余地を担保したいから、曖昧にしか言えない。
0709774ワット発電中さん
垢版 |
2017/03/14(火) 07:42:35.81ID:G/ANrYqO
>また、合成の話とごっちゃにしている。

どこが合成の話なのかな。w
0710774ワット発電中さん
垢版 |
2017/03/14(火) 08:04:06.50ID:G/ANrYqO
>698
君が勘ちがいするのもわかる。バリ糞分かりにくい無茶苦茶な文法だから。

非同期リセットの書き方
always @(posedge clk or negedge resetn)
if(resetn)
dff <= 0;

 これnegedge resetnでエッジって書いてあるが
 「clkで叩かないようにように」
って意味だからな。

だから
dff.clrn = resetn;
と同じ意味。
0711774ワット発電中さん
垢版 |
2017/03/14(火) 08:11:23.16ID:G/ANrYqO
だからこの3行が意味するのは、単にリセットをdffのclrnに接続して
clkをDffのclkに接続するってこと。
dff.clrn = resetn;
dff.clk = clk;
ってことだ。
always @(posedge clk or negedge resetn) って糞ってのがわかるだろ。
or だと なんでorなんだよ。
negedge だぜ 意味不明だ。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況