忍者ブログ

NOROMA CLUB -日記-

2022年08月13日  青春18きっぷで岡山・姫路

青春18きっぷで岡山まで行こうと思っていたら、
岡山市内で大雨が発生していたようです。

瀬戸駅までは普通に走っていましたが、
急遽運転見合わせで、線路点検のため2時間掛かるとか。

さすがに2時間待ちで岡山に到着しても、何もせずに帰ることになりそうなので、
隣の列車で相生まで引き返してきました。

岡山までは行けませんでしたが、
とりあえずここまで乗ってきた黄色い113系です。


戻りの列車は115系。


相生駅に到着しましたが、ダイヤが乱れていたので、
姫路行きの接続はなくて45分待ちでした。
ということで途中下車してみました。
相生駅で乗り換えはよくしますが、駅の外に出るのは初めてな気がします。
短時間で観光できるようなところもわからなかったので、
入場券を買って新幹線ホームに行ってみました。
姫路まで戻ってきて、播但線から和田山・福知山経由で大阪まで帰れるか、
とも思ったのですが、接続が悪くて結構厳しそうなので諦めました。

とはいえ、直接帰るには時間が早かったので、
姫新線の播磨新宮と、播但線の福崎までふらっと行ってみました。

姫新線 播磨新宮駅。



播但線 福崎駅。


姫新線も播但線もローカル線のイメージだったのですが、
このあたりまでなら本数も結構多くてふらっと行けるみたいです。
どちらも、国鉄時代のローカル線の駅舎を想像していたのですが、
新しそうな駅舎でした。

拍手[0回]

PR

2022年07月23日  青春18きっぷで福井

青春18きっぷを買って、新快速で敦賀まで行ってみました。
敦賀駅まで来たの、もしかしたら10年ぶりぐらいかもしれないのですが、
新幹線開業に向けて、かなり変わっていました。

駅舎も駅前も綺麗に整備されていますし。



在来線ホームの雰囲気は昔のままですが、昔はなかった跨線橋と、奥には新幹線の工事中。

敦賀駅に着いた時点で、まだ12時過ぎだったので、
そのまま福井の方まで進んでみました。

福井行きの521系です。
そういえば前回来た頃は、もしかしたらまだ419系が走っていた頃だったかも。

そのまま福井まで行くつもりでしたが、
ふと武生で降りて、福井鉄道に乗り換えてみました。


元名鉄の880形。


駅のベンチのようなシートが並ぶ、レトロな車内。


福井鉄道は路面電車のイメージだったのですが、
福井の市街地に入るまではずっとローカル線の雰囲気で、
列車もすごく揺れてました(笑)

福井鉄道を乗り通して田原町駅までやって来ました。


田原町駅の周りで待っていたら、かわいらしい車両がやって来ました。


また別の新型車両で、こっちはつり目で3両編成。


てっきり、新型車両はFUKURAMだけなのかと思っていましたが、
最初に見たかわいい方は、えちぜん鉄道と車両なのだとか。

田原町駅から、今度はえちぜん鉄道で福井駅まで移動です。


えちぜん鉄道で福井駅は、木材のイメージの綺麗な駅です。


福井駅も、新幹線開業に向けて綺麗になっています。

10年ぐらい前に来た時も、ホームが綺麗になっていたのは覚えていますが、
乗り換えるだけだったので、外から見たのは初めて。

ここにも福井鉄道がやってきます。
一区間だけスイッチバックして乗り入れてくるという、変わった運行形態です。

毎日見かけるサンダーバードも、駅が変わるとちょっと新鮮。


タラコ色のキハ120系。


帰りの521系は4両編成だったので、空いていて快適でした。


敦賀からの新快速は、最長普通列車でおなじみの、敦賀発、播州赤穂行きでした。
てっきり湖西線経由なのかと思っていたのですが、米原経由だったので、
30分ほど余計に時間がかかります。

拍手[0回]


2022年07月19日  JR京都線ダイヤ乱れ

会社帰り、大雨と事故の影響でJR京都線のダイヤがいろいろ混乱してました。

神戸のあたりが全部止まっているらしく、
新大阪まで乗ってきた快速は、姫路行きのはずが尼崎行きに変更。


新快速は全部大阪止まりに変更。


というか、新大阪までは遅れながらも到着しましたが、
大阪駅でいろいろ詰まっていて、全然進んでなさそうな感じ。

案内板も、いろいろカオスな感じ。。。


端っこのホームには「スーパーはくと」がぽつんと待機中。
近郊列車は大阪止まりにでもできますが、
さすがに「スーパーはくと」は神戸方面に行けないのは致命的。
このあと、無事動き出したのかな。。。

ちなみに、「スーパーはくと」名物の「増2号車」付きでした。

拍手[0回]


2022年07月18日  Kobe Love Port・みなとまつり

神戸港でイベントがあるようなので、ふらっと出かけてみました。

三宮で一日乗車券を買って、「ポートループ」に乗車です。

連接バスは、車内も広いし、交差点を曲がるときに動きが楽しいです。
以前は1時間に1~2本程度で、なかなかタイミング良く乗れなかったのですが、
いつの間にか20分間隔になって、運行経路も変わって、けっこう利用しやすくなりました。

神戸港ボート天国として、海上保安庁をはじめ何隻か展示されていました。
ただ、大型船はいなかったのと、船内の見学も結構並んでいたので、
外から見るだけで帰って来ました。

せっかく一日乗車券があるので、今度は「シティループ」にも乗車です。
「シティループ」には初めて乗ってみましたが、
単にちょっと凝ったデザインのバスかと思っていたら、
前乗り後ろ降りだったり、ガイドさんが添乗していたりで、いろいろ新鮮。

ガイドさんが説明してくれる「シティループ」か、
広々ゆったりの「ポートループ」か、どちらに乗るか悩ましいところです(笑)

「シティループ」で、北野異人館街の方まで行ってみました。
ぶらぶら散歩しながら、建物を外から眺めていただけですが、
良さはあんまりピンと来なかったですね。。。
・・・と思ったのですが、写真で見ると、
適当に数枚撮っただけなのに、それなりに雰囲気出てますね(笑)

拍手[0回]


2022年07月02日  池原ダム

国道169号線を南下して、池原ダムまで行ってみました。
これまでにも何度か来たことはありましたが、巨大なアーチ式ダムの堤体ですが、
洪水吐とかがなくて、なんか違和感があるというか・・・。



洪水吐は対岸の尾根の方にあります。


元々の川が蛇行していたらしく、
洪水吐は尾根を削ってショートカットしている感じ。


巨大なゲートの横の道は、ダムの堤体ではなく、ただの橋だそうです。

ちなみにこの道は、紀伊半島の酷道としても有名な国道425号線。

夜間通行規制で尾鷲まで通り抜け出来ません、とのことですが、
そもそもこの道で尾鷲まで通り抜けするのもかなりたいへんらしいです。


ダムの下は公園とかキャンプ場になっていて、
高さ100m以上あるらしく、下から見上げるとさらに巨大です。


さすがに真下までは行けませんが、結構近くまでは行けるというか、
この壁の向こうに巨大な水圧が掛かっていると想像すると、
大丈夫だとはわかっていても、ちょっと怖くなってきます。

拍手[0回]


2022年06月26日  嵐山でぶらぶら

大山崎から阪急で京都方面に乗ってみて、桂へ。
嵐山線の6300系に乗ってみようかと思い立って、嵐山まで行ってみました。


嵐山とか行ったのも、10年ぶりぐらいかもしれないです。
ということで、とりあえず渡月橋です。


渡月橋を渡ると、結構人も多くて混雑していたので、
嵐電に乗って市街地の方へ戻って来ました。
嵐山の滞在時間は、たぶん10分ぐらい・・・(笑)

西院で降りて阪急に乗り換えです。
嵐電の西院駅は、知らない間にホームの位置が変わっていたり、
阪急との改札ができていたり、便利になっていたみたいです。
でも、電鐘式の踏切はまだ現役なんですね。

拍手[0回]


2022年06月26日  大山崎でぶらぶら

新大阪から山崎まで行って、山崎のあたりでぶらぶらしてみました。
山の方へ登ってみようかと思っていたのですが、
いざ目の前にすると思った以上の坂道だったので、入口ですぐに諦めました(笑)

阪急とJRの交差するところで少しだけ撮影です。
阪急の特急はスピードも出ているし、踏切もないので、
いつの間にかやって来て通り過ぎてしまします。


ここだとJRも見れますし。
タイミング良く交差してくれればいいんですが、なかなかそんなにうまくはいかない。


近くのJR踏切。
意外と障害物がかわせてインカーブで狙えますね。


阪急の大山崎駅で待っていると、「京とれいん」が通過していきました。

拍手[0回]


2022年06月26日  宮原の201系

ふらっと新大阪へ行ってみたので、
宮原総合運転所(網干総合車両所・宮原支所らしいですが)に行ってみました。
大和路線とおおさか東線の運用から外れた201系と、いつもの「サロンカーなにわ」です。
223系と221系も疎開しているようですが、これも余っているのか、一時的なものなのか。

昔は「サロンカーなにわ」以外にも、「あすか」とか、
「トワイライトエクスプレス」の予備車両とか、
その他12系・14系・24系とかいろいろ居ましたが、すっかり変わってしまいました。

と思ったら、12系客車は別のところにいました。
近くでエンジン音が聞こえていたので、たぶん12系の発電エンジンが動いていたみたい。

拍手[0回]


2022年05月21日  Pythonで高位合成

PythonのプログラムからVerilogのRTLに変換できる高位合成環境が
あるようなので試しに使ってみました。

以下は、いろいろメモです。

polyphonyをインストールする。
% pip3 install polyphony

高位合成実行。
% polyphony -vm -vd fact.py
で、Verilogファイルが生成できました。

結果的にはすごく簡単なのですが、参考にしたWebページのとおりにやっても
うまく動かなかったりで、途中過程は意外と苦労しました。。。

ちなみに、変換前後のコードは最後の方に貼り付けておきます。
可読性はあまり良くないですが、一応それらしい回路が出力されているようです。


あと、「Icarus Verilog」という、OSSのVerilogシミュレータも入れてみました。

Icarus Verilogをインストールする。
sudo apt install iverilog
sudo apt install gtkwave

SIM実行
iverilog -o sim -s test test.v polyphony_out.v
./sim

波形確認
gtkwave test.vcd  &
でGUIが立ち上がるので、適当に操作して波形表示

ちなみに、今回はUbuntu(Jetson Nano)で試していますが、
Windows版もこちらにあるようです(試していませんが)。

ひとまず簡単なプログラムであれば、Verilogに変換できることはわかったのですが、
深堀できていないので、使い物になるのかどうかはまだよくわかりません。

とりあえずNumPy とかの便利なライブラリは使えないようです(コンパイルでエラーになるので)。
あとは、ネットで検索しても、polyphonyについて詳しく説明しているページがあまりなさそうで、
polyphony公式のGitHubのサンプルプログラムを見ながら試していくしかなさそうな感じですかね。


以下、階乗計算プログラムの変換前後のコード例です。


Pythonプログラム
from polyphony import testbench
def fact(x):
    y = 1
    for i in range(1, x+1):
        y = y * i
    return y
@testbench
def test():
    for i in range(0,10):
        fact(i)
test()

Verilog RTL(本体)
module fact
  (
    input wire clk,
    input wire rst,
    input wire fact_ready,
    input wire fact_accept,
    output reg fact_valid,
    input wire signed [31:0] fact_in_x,
    output reg signed [31:0] fact_out_0
  );
  //localparams
  localparam fact_b1_INIT = 0;
  localparam fact_b1_S0 = 1;
  localparam fact_b1_S1 = 2;
  localparam fact_forelse5_FINISH = 3;
  localparam fact_L1_fortest2_S0 = 4;
  localparam fact_L1_forbody3_S0 = 5;
  localparam fact_L1_forbody3_S1 = 6;
  
  //signals: 
  wire c71;
  reg        [2:0] fact_state;
  wire signed [31:0] i3;
  wire signed [31:0] t65;
  wire signed [31:0] y3;
  reg signed [31:0] i2;
  reg signed [31:0] x;
  reg signed [31:0] y2;
  //combinations: 
  assign c71 = (i2 < t65);
  assign i3 = (i2 + 1);
  assign t65 = (x + 1);
  assign y3 = (y2 * i2);
  
  always @(posedge clk) begin
    if (rst) begin
      fact_out_0 <= 0;
      i2 <= 0;
      x <= 0;
      y2 <= 0;
      fact_state <= fact_b1_INIT;
    end else begin //if (rst)
      case(fact_state)
      fact_b1_INIT: begin
        fact_valid <= 0;
        if (fact_ready == 1) begin
          x <= fact_in_x;
          i2 <= 1;
          y2 <= 1;
          fact_state <= fact_b1_S1;
        end
      end
      fact_b1_S1: begin
        /* t65 <= (x + 1); */
        fact_state <= fact_L1_fortest2_S0;
      end
      fact_L1_fortest2_S0: begin
        /* c71 <= (i2 < t65); */
        if (c71) begin
          /* y3 <= (y2 * i2); */
          /* i3 <= (i2 + 1); */
          i2 <= i3;
          y2 <= y3;
          fact_state <= fact_L1_fortest2_S0;
        end else begin
          fact_valid <= 1;
          if (fact_accept == 1) begin
            fact_state <= fact_b1_INIT;
          end
          fact_out_0 <= y2;
        end
      end
      endcase
    end
  end
  
endmodule

Verilog RTL(テストベンチ)
module test
  (
    
  );
  //localparams
  localparam CLK_PERIOD = 10;
  localparam CLK_HALF_PERIOD = 5;
  localparam INITIAL_RESET_SPAN = 100;
  localparam test_b1_INIT = 0;
  localparam test_b1_S1 = 1;
  localparam test_forelse5_S0 = 2;
  localparam test_forelse5_FINISH = 3;
  localparam test_L1_fortest2_S0 = 4;
  localparam test_L1_forbody3_S0 = 5;
  localparam test_L1_forbody3_S1 = 6;
  localparam test_L1_forbody3_S2 = 7;
  localparam test_L1_forbody3_S3 = 8;
  localparam test_L1_forbody3_S4 = 9;
  localparam test_L1_forbody3_S5 = 10;
  localparam test_L1_forbody3_S6 = 11;
  localparam test_L1_forbody3_S7 = 12;
  
  //signals: 
  wire c69;
  wire fact_0_valid;
  reg clk;
  reg fact_0_accept;
  reg fact_0_ready;
  reg rst;
  reg        [3:0] test_state;
  reg signed [31:0] i2;
  reg signed [31:0] i3;
  //signals: in_x
  reg        [31:0] fact_0_in_x;
  //signals: out_0
  wire        [31:0] fact_0_out_0;
  //combinations: 
  assign c69 = (i2 < 10);
  //sub modules
  //fact_0 instance
  fact fact_0(
    .clk(clk),
    .rst(rst),
    .fact_ready(fact_0_ready),
    .fact_accept(fact_0_accept),
    .fact_valid(fact_0_valid),
    .fact_in_x(fact_0_in_x),
    .fact_out_0(fact_0_out_0)
  );
  
  
  initial begin
    $monitor("%5t:fact_0_in_x=%4d, fact_0_out_0=%4d", $time, fact_0_in_x, fact_0_out_0);
    $dumpfile("test.vcd");
    $dumpvars(0, test);
  end
  initial begin
    clk = 0;
    #CLK_HALF_PERIOD
    forever #CLK_HALF_PERIOD clk = ~clk;
  end
  initial begin
    rst <= 1;
    #INITIAL_RESET_SPAN
    rst <= 0;
  end
  
  always @(posedge clk) begin
    if (rst) begin
      fact_0_accept <= 0;
      fact_0_ready <= 0;
      i2 <= 0;
      i3 <= 0;
      test_state <= test_b1_INIT;
    end else begin //if (rst)
      case(test_state)
      test_b1_INIT: begin
        i2 <= 0;
        test_state <= test_L1_fortest2_S0;
      end
      test_forelse5_FINISH: begin
        $display("%5t:finish", $time);
        $finish();
      end
      test_L1_fortest2_S0: begin
        /* c69 <= (i2 < 10); */
        if (c69) begin
          fact_0_ready <= 1;
          fact_0_in_x <= i2;
          test_state <= test_L1_forbody3_S1;
        end else begin
          test_state <= test_forelse5_FINISH;
        end
      end
      test_L1_forbody3_S1: begin
        fact_0_ready <= 0;
        test_state <= test_L1_forbody3_S2;
      end
      test_L1_forbody3_S2: begin
        if (fact_0_valid == 1) begin
          fact_0_accept <= 1;
          test_state <= test_L1_forbody3_S4;
        end
      end
      test_L1_forbody3_S4: begin
        fact_0_accept <= 0;
        test_state <= test_L1_forbody3_S5;
      end
      test_L1_forbody3_S5: begin
        i3 <= (i2 + 1);
        test_state <= test_L1_forbody3_S6;
      end
      test_L1_forbody3_S6: begin
        i2 <= i3;
        test_state <= test_L1_fortest2_S0;
      end
      endcase
    end
  end
  
endmodule

拍手[0回]


2022年05月19日  新大阪駅 特急ラッシュ

最近毎朝見かける光景ですが、新大阪駅の朝の特急ラッシュの風景です。
たまには写真を撮ってみました。

まずは7:41頃に「こうのとり」と「はるか」が同時入線です。
同時を狙っているわけではないとは思いますので、
日によっては多少ずれるのですが、タイミング良くやって来るとなんか気持ちいいいです。

そのあと2分ぐらいで「サンダーバード」も到着です。



さらに隣のホームには関空行きの「はるか」もやって来て、
左から271系「はるか」、281系「はるか」、683系「サンダーバード」、287系「こうのとり」
と、特急4列車が勢ぞろいです。
さすがに4本一緒に狙うのは難しくて、どうやっても人か柱に邪魔されてしまいますが。

拍手[0回]