ハブ君の寝言

日記のような何か

verilog

Verilogでの算術シフト

シフトは a = b >> c; でいいのだが wire [7:0] a,b,c; b = 8'hff; c = 8'h01; a = b >> c; とすると、aは7fになる これをffにしたいときは a = b >>> c; とするだけでいい今までなんでわざわざ符号拡張するコードを書いていたのか

Verilogでの変数(reg)の初期値設定

ど忘れして、ググッてしまったので書く module hoge ( input a, input b, output reg[7:0] led ) initial led <= 1; always (pasedge a) begin if(!b)begin led <= 1; end else begin led[7:0] <= {led[6:0],led[7]}; end end endmodule てな感じでinitial文…

FPGAのUSB制御

RS232Cだと遅すぎる.死んだほうがいいというわけで,USBで転送してみようという方向で.まだ,何もやってないけど以下のものを使って頑張ろうかと参考URL: Verilog http://www.geocities.jp/altshibabou/win/ezusb_05.html http://www.geocities.jp/altshi…

配置配線

INST "XLXI_1" BEL = D6LUT; INST "XLXI_1" LOC = SLICE_X26Y77; INST "XLXI_6" BEL = D6LUT; INST "XLXI_6" LOC = SLICE_X26Y78; INST "XLXI_2" BEL = D6LUT; INST "XLXI_2" LOC = SLICE_X27Y77; INST "XLXI_4" BEL = D6LUT; INST "XLXI_4" LOC = SLICE_X27…

verilogでの二次元配列

verilogで二次元配列なんて書くことないと思ってたんだけどレジスタとか書くときに二次元配列すると楽なんですね。 `define BIT 32 `define ADDR 64 reg [0:`BIT-1] register [0:`ADDR-1]; integer i; initial begin for(i=0;i<`ADDR;i=i+1) begin register[…

parameterとかの渡し方

人に教える立場になった気がするので,まとめておく module clk( output ck ); reg ck; initial ck=1; always #10 ck= ~ck; endmodule module r #( parameter n = 1 )( input[n-1:0] d, input load,ck, output [n-1:0] q ); reg [n-1:0] qd; initial qd = 0;…

ISE11でPack I/O Registersの設定オプション

なんということでしょう…Pack I/O Registersの設定オプションがデフォルトでoffとなっていたまじ、こんな設定でつまづくとかやばい ISEを理解するのには一年じゃ無理です以下参照URL http://marsee101.blog19.fc2.com/blog-entry-1406.html http://nahitafu.…

今日のエラー

ERROR:MapLib:979 - LUT2 symbol "memory/LAB_DESIGN_USR/r_APP_WDF_DATA_mux0000<0>1" (output signal=memory/LAB_DESIGN_USR/r_APP_WDF_DATA_mux0000<0>) has input signal "memory/ShiftRegistar/OutData<0>" which will be trimmed. See Section 5 of th…

無理死ぬ

メモリの書き込み→読み込みを1アドレスずつに実行する物を書いているのだが、上手く動作しない。1を書きこむと1が読み込まれる。 次に2を書きこむと1が読み込まれる。 次に3を書きこむと2が読み込まれる。 次に4を書きこむと2がよみこまれる。 次に…

今日のエラー

ERROR:Xst:1706 - Unit <LAB_DESIGN_SEQ>: port <sig_WRFIN> of logic node <get_data_mux0000> has no source ERROR:Xst:1706 - Unit <LAB_DESIGN_SEQ>: port <sig_WRFIN> of logic node <r_write_or0000> has no source ERROR:Xst:1706 - Unit <LAB_DESIGN_SEQ>: port <sig_WRFIN> of logic node <r_read_or0000> has no …</r_read_or0000></sig_wrfin></lab_design_seq></r_write_or0000></sig_wrfin></lab_design_seq></get_data_mux0000></sig_wrfin></lab_design_seq>

今日のエラー

ERROR:Xst:528 - Multi-source in Unit on signal always @(posedge ClockA) begin a <= 1; end always @(posedge ClockB) begin if (a = 1) begin a <= 0; end end ってやったらダメだよね… どうしよう… reg増やして reg a; reg b; always @(posedge ClockA…

シフトレジスタもどき

シフトさせまくって64bit分溜まったら吐き出す 吐き出すとき、Enableがたつ 使えるかどうかは、要確認 module Shift64 #( parameter DATA_WIDTH = 64, parameter LOG_WIDTH = 6 )( input InData, output reg [(DATA_WIDTH-1):0] OutData, input CLK50M, outp…

64bitシフトレジスタ

超てきとうに書いた。あってるかわからん。 module Shift64( input InData, output reg [63:0] OutData, input CLK50M ); always @(posedge CLK50M) begin OutData[63:0] <= {OutData[62:0],InData}; end endmodule

プッシュスイッチ2

なんかこういうのも考えてみた。 コンパイル通してないので、実際に使えるかは要検証。 always @(posedge CLK) begin cnt[0] <= PSW; cnt[1] <= (cnt[0] && PSW); cnt[2] <= (cnt[1] && cnt[0]); cnt[3] <= (cnt[2] && cnt[1]); cnt[4] <= (cnt[3] && cnt[2]…

プッシュスイッチ

簡単なプッシュスイッチのアレ作ったけど、カウント量増やした方がいいのかなぁ。 always @(posedge CLK) begin if(PSW) begin if(cnt == 8'hff) begin nr <= 1; end else begin cnt <= cnt + 1; end end else begin cnt <= 0; nr <= 0; end end

どうなってんだよと。

この出力、SYS_CLK_INとREF_CLK200_INが振動していない どういうことですか、死んでください。 IBUFGDS_LVPECL_25 lvds_sys_clk_input ( .I (SYS_CLK_P), .IB (SYS_CLK_N), .O (SYS_CLK_IN) ); IBUFGDS_LVPECL_25 lvpecl_clk200_in ( .O (REF_CLK200_IN), .I…

今日のエラー1

今日のエラーって感じにシリーズ化しましょう。 ERROR:Xst:872 - "lab_design.v" line 325: Unsupported target. mig_32 ddr2_sdram( // SYSTEM .sys_rst_n (!PSWRST), .sys_clk_p (CLK333MP), .sys_clk_n (CLK333MN), .clk200_p (CLK200MP), .clk200_n (CLK…

やる気がなかったりあったり。

inoutで宣言したやつの使い方がさっぱりで、死んでた。最初は inout aaa; always @(posedge clock) begin if(in) begin assign aaa = 1; end else begin uuu = aaa; end end って感じでやってたけど。inout aaa;assign aaa = (in)? 1:uuu;でいいみたいね。

寒くなってきたような気がする。

カウンター回路?っぽいものを使おうとして、 わざわざcntを何度も呼び出す必要ないよなぁ とか考えていじったけど大して効率が良くなったわけではなく…。state 2'h2 がいらない子っぽいんだよねぇ このままだと、1clock分無駄にしてるし。 module count28( …

クロックが自分を苦しめる。

sys_clk_p, sys_clk_n, clk200_p, clk200_nと4個もクロックがあるんだけど、どれをどのようにすればいいのかはさっぱりだ。 clk200_p = ~clk200_n; sys_clk_p = ~sys_clk_n; ってすればいいのはわかる。 clk200系は200MHzにすればいいってのもわかる。sys_cl…

勉強中

always @(posedge clk) begin : aaa ... end って、beginに名前をつけれるらしい。 んで、呼び出せるみたいね。よくわかってない。 genvar i; generate for(i=0;i

暑い死ぬ

QuartusIIは無理だとあきらめて、イカロスをインスコ。しかし、Program Filesの半角スペースが無理オワタだったので、c:\Icarus_Verilog に入れる。先回の加算器も問題なく動いて x y s time 0 0 0 0 0 1 1 50 1 0 1 100 1 1 0 150と結果が出た。完璧だね☆さて…