テールランプを LED に改造したけど,車検に通らなかったらめんどくさいことになるので (後日追記: 一応車検は通った),一応調べてみた.ありがたいことに車検に関しての規則は「審査事務規程」というタイトルて web 上に公開してある.
で,それの尾灯・制動灯について読んでみる.(以下,関係ありそうなところだけ超意訳)
●尾灯
・明るすぎても暗すぎてもだめだよ! (5~30W)
・面積は 15cm^2 以上だよ!
・斜めからも見えないとだめだよ!
・ノーマルでない場合は,認可を受けるか,ノーマルと同じ位置であれば認めるよ!
●制動灯
・明るすぎても暗すぎてもだめだよ! (15~60W)
・尾灯と兼用の場合は,明るさが尾灯の 5倍以上ないとだめだよ!
・面積は 20cm^2 以上だよ!
・斜めからも見えないとだめだよ!
・ノーマルでない場合は,認可を受けるか,ノーマルと同じ位置であれば認めるよ!
要はノーマルと同じ場所を光らせて,見え方や明るさをノーマルと同じくらいにしとけば,車検は問題ないっぽい.(明るさの単位に W ってどうなん,と思うけど.LED だったら爆光だよね)
今回の改造で大きく変わるのは光る面積だが,リングの幅が 0.5cm としても 20cm^2 は余裕でクリアしてるので問題ない.
厳密には内側 2灯は元テールランプじゃないところが改造により光るが,エリを知らない人が見れば形はどう見てもテールランプなので,光らせたところで問題ないだろう.
2019年4月15日月曜日
エリーゼ テールランプ LED 化プロジェクト完了
前回でランプの殻割りまで終わったので,ランプの組み上げに入る.
LED はテールランプユニットの本体側(?) に接着した.もし LED が壊れたとき再び分解しやすいように,シーラント剤で接着する.ちなみに,この状態でも電球をつければノーマルと変わりなく点灯するので,最悪 LED が車検に通らなくても (大丈夫と思うけど),分解せずに簡単に元に戻せる.
あとはランプ外殻をシーラント剤で接着すればランプ本体は完成.
次に LED 接続用のケーブルを作成した.
ケーブルと LED とは 4P コネクタで接続する予定だったけど,えらく大層なコネクタ (防水コネクタ.よく考えたらトランク内だから防水の必要がない) が届いたので,ギボシ端子に変更した.
と思ったけど,ギボシ 16個つけ外しするのはたいへんめんどくさいので,4P コネクタのほうが良かったと後悔した.
で,車に取り付けてついに完成ヽ(´ー`)ノ
手前味噌ながら,控えめに言っても最高すぎるw 最初俺の車超カッコエエーッて笑いが止まらんかったwww
LED はランプ内部の拡散板越しなので,リング内側がボワっと光るけど,これはこれでいい気がしてきた.
日光下でストップランプの視認性はこんな感じで,問題なし.
ちなみに夜に撮影すると完全なリングに写るんだけど,実際はこういう細かい LED の粒は見える.けどほぼリングだし,エリ標準 LED テールとかエリパの LED テールより光り方が好みなんで満足ヽ(´ー`)ノ.
点灯してないときはこんな感じ.奥にうっすらと LED があるけど,エリを知ってる人が見ても言わない限りわからないだろう.つまり,なつやすみの工作感も皆無.
中の拡散板はそのままなので,消灯時の見た目はノーマルと変わらない,少々古臭いもの.拡散板を取ればユーロテールっぽいよりモダンな見た目になるが,LED も丸見えになるので一長一短.
せっかくなんで動画も撮ってみた.
これで 5千円かかってないから,満足度は超高いっす.今回殻割りだけは苦労したけど,それ以外は簡単な作業 かつ 安いんで,おすすめ.
以下,使用したパーツと費用:
・LED リング Angel Eyes Halo Ring Car Led 110mm×4個,100mm×4個 ¥3,794
・ディマー Mini 3 Keys For Single Color LED Brightness Dimmer 4個で ¥198 (2個だけ使用)
・6pin line car waterproof connector ¥51+送料
・ギボシ端子 16個 ¥360
・電線 ¥200
LED はテールランプユニットの本体側(?) に接着した.もし LED が壊れたとき再び分解しやすいように,シーラント剤で接着する.ちなみに,この状態でも電球をつければノーマルと変わりなく点灯するので,最悪 LED が車検に通らなくても (大丈夫と思うけど),分解せずに簡単に元に戻せる.
あとはランプ外殻をシーラント剤で接着すればランプ本体は完成.
次に LED 接続用のケーブルを作成した.
ケーブルと LED とは 4P コネクタで接続する予定だったけど,えらく大層なコネクタ (防水コネクタ.よく考えたらトランク内だから防水の必要がない) が届いたので,ギボシ端子に変更した.
と思ったけど,ギボシ 16個つけ外しするのはたいへんめんどくさいので,4P コネクタのほうが良かったと後悔した.
で,車に取り付けてついに完成ヽ(´ー`)ノ
手前味噌ながら,控えめに言っても最高すぎるw 最初俺の車超カッコエエーッて笑いが止まらんかったwww
LED はランプ内部の拡散板越しなので,リング内側がボワっと光るけど,これはこれでいい気がしてきた.
日光下でストップランプの視認性はこんな感じで,問題なし.
ちなみに夜に撮影すると完全なリングに写るんだけど,実際はこういう細かい LED の粒は見える.けどほぼリングだし,エリ標準 LED テールとかエリパの LED テールより光り方が好みなんで満足ヽ(´ー`)ノ.
点灯してないときはこんな感じ.奥にうっすらと LED があるけど,エリを知ってる人が見ても言わない限りわからないだろう.つまり,なつやすみの工作感も皆無.
中の拡散板はそのままなので,消灯時の見た目はノーマルと変わらない,少々古臭いもの.拡散板を取ればユーロテールっぽいよりモダンな見た目になるが,LED も丸見えになるので一長一短.
せっかくなんで動画も撮ってみた.
これで 5千円かかってないから,満足度は超高いっす.今回殻割りだけは苦労したけど,それ以外は簡単な作業 かつ 安いんで,おすすめ.
以下,使用したパーツと費用:
・LED リング Angel Eyes Halo Ring Car Led 110mm×4個,100mm×4個 ¥3,794
・ディマー Mini 3 Keys For Single Color LED Brightness Dimmer 4個で ¥198 (2個だけ使用)
・6pin line car waterproof connector ¥51+送料
・ギボシ端子 16個 ¥360
・電線 ¥200
2019年4月13日土曜日
エリーゼ テールランプ LED 化プロジェクト (4)
本プロジェクトで最大の難関であろうテールランプの殻割りを実行した.
まずテールランプをボディから取り外す.トランク裏からナット 2個取り外すだけなんで超簡単.と思ったらナット外してもびくともしない(汗 結果的にランプとボディの間の防水ゴムが張り付いていただけだった.
でランプのシーリング面とご対面.ここのシーリング剤はブチルゴムではないシーリング剤 (多分ウレタン系接着剤) で,温めても溶けないタイプ.仕方がないのでカッターで切るしかないのだが,壮絶に時間がかかる.最初の 1個は真面目に全周切って開けるのに半日かかった.
心が折れかかったので別の方法を模索.1/4周ほどシーリングを切ったら,写真のように一部だけ突破口を作り,(プラスチック部分に掛かる力をなるべく分散するために) 折ったカッターの刃を差し込み,更にマイナスドライバーを突っ込む.この状態でドライバーをひねりながらドライヤーで暖めると,シーリング剤は溶けないまでも柔らかくなるので,シーリングが伸びてほんの少し隙間が広がる.そこをカッターで切り,新たな突破口として前記のことを繰り返す.この方法を発見してから 40分くらいで開けられるようになった.
殻割り完了.この段階で初めてテールランプの内部構造がわかるので,LED 固定方法などがやっと検討できる.
で,構造上一番の問題となるのが,電球の光を面に広げる拡散板.こいつは中心あたりがライト外殻と接着されており,これを外すには結構な加工が必要.
見た目優先なら外すべきだけど,外しちゃうとウィンカー用の遮光パーツが支えを失ってガタガタになる (要はノーマルのウィンカーが使えない) のと,やはり元に戻せない加工は抵抗があったので,今回は拡散板は残すことにした.
そうなると LED は拡散板の裏に貼りつけるだけなので作業も楽.
で仮組みして光らせてみた.
やはり拡散板ごしだと LED のリングがいまいちクッキリしないけど,思ってたよりひどい状態でもないので,まぁ妥協できる範囲内ということにしておく.
どうしても我慢できなかったら,後でリューター買って加工するか.
まずテールランプをボディから取り外す.トランク裏からナット 2個取り外すだけなんで超簡単.と思ったらナット外してもびくともしない(汗 結果的にランプとボディの間の防水ゴムが張り付いていただけだった.
でランプのシーリング面とご対面.ここのシーリング剤はブチルゴムではないシーリング剤 (多分ウレタン系接着剤) で,温めても溶けないタイプ.仕方がないのでカッターで切るしかないのだが,壮絶に時間がかかる.最初の 1個は真面目に全周切って開けるのに半日かかった.
心が折れかかったので別の方法を模索.1/4周ほどシーリングを切ったら,写真のように一部だけ突破口を作り,(プラスチック部分に掛かる力をなるべく分散するために) 折ったカッターの刃を差し込み,更にマイナスドライバーを突っ込む.この状態でドライバーをひねりながらドライヤーで暖めると,シーリング剤は溶けないまでも柔らかくなるので,シーリングが伸びてほんの少し隙間が広がる.そこをカッターで切り,新たな突破口として前記のことを繰り返す.この方法を発見してから 40分くらいで開けられるようになった.
殻割り完了.この段階で初めてテールランプの内部構造がわかるので,LED 固定方法などがやっと検討できる.
で,構造上一番の問題となるのが,電球の光を面に広げる拡散板.こいつは中心あたりがライト外殻と接着されており,これを外すには結構な加工が必要.
見た目優先なら外すべきだけど,外しちゃうとウィンカー用の遮光パーツが支えを失ってガタガタになる (要はノーマルのウィンカーが使えない) のと,やはり元に戻せない加工は抵抗があったので,今回は拡散板は残すことにした.
そうなると LED は拡散板の裏に貼りつけるだけなので作業も楽.
で仮組みして光らせてみた.
やはり拡散板ごしだと LED のリングがいまいちクッキリしないけど,思ってたよりひどい状態でもないので,まぁ妥協できる範囲内ということにしておく.
どうしても我慢できなかったら,後でリューター買って加工するか.
2019年4月8日月曜日
エリーゼ テールランプ LED 化プロジェクト (3)
AliExpress に発注して約 1ヶ月でようやくすべての部品が到着.到着までの時間はまぁわかっててやってるので文句もないけど,1ヶ月も経つとテンションがダダ下がりwww 最悪品物が行方不明になることも覚悟してたけど,今回はそんなこともなかった.
で,重い腰を上げてとりあえず検品代わりに点灯テストをしてみた.と思ったところでいきなり中華通販の洗礼「頼んだものと微妙に違う」を食らうw
AliExpress で見かける LED リングは写真が同じでも細かいバリエーションがいくつかあるようで,電流制限抵抗のみで +12V のやつと,レギュレータ付きで +9~24V のやつがあるようだった.で今回 PWM のディマーをつけるので,レギュレータはディマー経由だとどんな影響があるか読めなかったので,電流制限抵抗のみのやつを発注したのだが,レギュレータのやつが来た.
しょうがないのでテスト続行.実験用電源ユニットなんかは持ってないので,PC の 12V 電源コネクタから取り出してみた.ちなみに今回両端がワニ口クリップになってる線 10本も買ったんだけど,こういうテストでは非常に便利ヽ(´ー`)ノ
というわけで点灯してみた.12V 直結のストップランプ側 (写真左側) の明るさは問題なし.
テールランプ側 (写真右側) のディマー + レギュレータも特に問題なく点灯してくれた.ただしディマーが min 50% くらいの暗さにしか調整できなかったので,もうちょっと暗いほうがいいかもしれない.実車につけてみてから,必要に応じで抵抗かますか.
ちなみにこの 1個 33円のディマー,明るさ調整だけでなく点滅させたり点滅速度を変えられたりして,簡単に車検非対応の頭の悪い車に設定可能 (しないけどw).安いんで 2個必要なところ 4個買っておいたが,1個不良品www これも中華あるある.
次回はついにテールランプの殻割りかぁ.
で,重い腰を上げてとりあえず検品代わりに点灯テストをしてみた.と思ったところでいきなり中華通販の洗礼「頼んだものと微妙に違う」を食らうw
AliExpress で見かける LED リングは写真が同じでも細かいバリエーションがいくつかあるようで,電流制限抵抗のみで +12V のやつと,レギュレータ付きで +9~24V のやつがあるようだった.で今回 PWM のディマーをつけるので,レギュレータはディマー経由だとどんな影響があるか読めなかったので,電流制限抵抗のみのやつを発注したのだが,レギュレータのやつが来た.
しょうがないのでテスト続行.実験用電源ユニットなんかは持ってないので,PC の 12V 電源コネクタから取り出してみた.ちなみに今回両端がワニ口クリップになってる線 10本も買ったんだけど,こういうテストでは非常に便利ヽ(´ー`)ノ
というわけで点灯してみた.12V 直結のストップランプ側 (写真左側) の明るさは問題なし.
テールランプ側 (写真右側) のディマー + レギュレータも特に問題なく点灯してくれた.ただしディマーが min 50% くらいの暗さにしか調整できなかったので,もうちょっと暗いほうがいいかもしれない.実車につけてみてから,必要に応じで抵抗かますか.
ちなみにこの 1個 33円のディマー,明るさ調整だけでなく点滅させたり点滅速度を変えられたりして,簡単に車検非対応の頭の悪い車に設定可能 (しないけどw).安いんで 2個必要なところ 4個買っておいたが,1個不良品www これも中華あるある.
次回はついにテールランプの殻割りかぁ.
2019年3月10日日曜日
エリーゼ テールランプ LED 化プロジェクト (2)
実車の配線とにらめっこしながら,配線の検討と必要なパーツを見積もってみた.
まず発光パターンだが,テールランプ (スモール点灯時) とストップランプとで光る面積を変えたかったので,LED リングは 2重にし,外リング: テールランプ専用,中リング: ストップランプ専用,と役割を明確に分けることにした.
次に車体との配線だが,
・テールランプ,ストップランプの配線は車体外側ランプの片側の 6P コネクタから取り出し,4灯全部に分配する.
・テールランプの LED を暗くするためにディマーを入れる.安かったので念の為ストップランプ側にも入れることにした.
・自作ハーネスとランプとの切り離しを容易にするために 3P コネクタ (がなかったので 4P) を入れる.
・元々のハーネスを切り裂くのに抵抗があったので,上記の自作ハーネスを 6P コネクタの中間にかませるようにする.
・ウインカー,リバースランプは,ノーマルをそのまま使用する.
・バックフォグは無くても困らんし後続車の迷惑になるので廃止する ノーマルの電球をそのまま残すことにした.光り方に統一感がなくなるけど,今まで使ったことないし,ただの車検対策.
ということで必要そうなパーツがあらかた決まったので,一気に AliExpress に発注をかけた.
しかし AilExpress 初めて使ってみたけどすげーわ.6P コネクタとか日本じゃ手に入りそうにないものが安価で買える.まぁ届くかどうかは謎だけど.あと到着に 1ヶ月くらいかかりそうなので,着手は 4月に入ってからになりそう.
まず発光パターンだが,テールランプ (スモール点灯時) とストップランプとで光る面積を変えたかったので,LED リングは 2重にし,外リング: テールランプ専用,中リング: ストップランプ専用,と役割を明確に分けることにした.
次に車体との配線だが,
・テールランプ,ストップランプの配線は車体外側ランプの片側の 6P コネクタから取り出し,4灯全部に分配する.
・テールランプの LED を暗くするためにディマーを入れる.安かったので念の為ストップランプ側にも入れることにした.
・自作ハーネスとランプとの切り離しを容易にするために 3P コネクタ (がなかったので 4P) を入れる.
・元々のハーネスを切り裂くのに抵抗があったので,上記の自作ハーネスを 6P コネクタの中間にかませるようにする.
・ウインカー,リバースランプは,ノーマルをそのまま使用する.
・バックフォグは無くても困らんし後続車の迷惑になるので
ということで必要そうなパーツがあらかた決まったので,一気に AliExpress に発注をかけた.
しかし AilExpress 初めて使ってみたけどすげーわ.6P コネクタとか日本じゃ手に入りそうにないものが安価で買える.まぁ届くかどうかは謎だけど.あと到着に 1ヶ月くらいかかりそうなので,着手は 4月に入ってからになりそう.
2019年3月9日土曜日
エリーゼ テールランプ LED 化プロジェクト始動
エリーゼのテールランプはせっかくの丸目 4灯なのに,内側 2灯が光らない.あと今だに電球なので古臭いと言わざるを得ない.
←純正テールランプ
高年式の純正 LED ランプを流用する手もあるけど,純正パーツは 4個買い揃えると確か¥10万くらいしたはずでそんなの買えねぇ.社外品でも¥6万くらいで,ただの見た目パーツにそんなに金かけられない.
更に言うと,LED の粒が見えるのさえ最近では古臭いと思えるので,FORD GT みたいに光らせられんかな? と思ったところで,イカリング赤 LED 使えば所望のことができるのでは? と思った.これなら材料費¥5千以下でできるはず.
というわけで見切り発車で AliExpress で LED リング発注.
よくわからないのが,スモール・ヘッドライト点灯時に暗くテールランプ点灯,ブレーキ時に明るくテールランプ点灯させる配線.
多分何も考えずにこれ使えは済むんだろうけど,ただの減光なら抵抗で良さげだし,
←こういう回路でいいんだろうか? わからん.
いろいろ考えてこの配線はボツ.
←純正テールランプ
高年式の純正 LED ランプを流用する手もあるけど,純正パーツは 4個買い揃えると確か¥10万くらいしたはずでそんなの買えねぇ.社外品でも¥6万くらいで,ただの見た目パーツにそんなに金かけられない.
更に言うと,LED の粒が見えるのさえ最近では古臭いと思えるので,FORD GT みたいに光らせられんかな? と思ったところで,イカリング赤 LED 使えば所望のことができるのでは? と思った.これなら材料費¥5千以下でできるはず.
というわけで見切り発車で AliExpress で LED リング発注.
多分何も考えずにこれ使えは済むんだろうけど,ただの減光なら抵抗で良さげだし,
←こういう回路でいいんだろうか? わからん.
いろいろ考えてこの配線はボツ.
2019年3月3日日曜日
iEPG 絶滅
テレビ王国が iEPG サービスを終了してしまった.PC から録画予約するには iEPG 必須だったのに,「あんま流行ってないんでやめるわ」的にやめられて困る(;´д⊂)
昔はテレビ王国以外にもいつくかあった iEPG 番組表サイトもいつの間にかことごとく止めてるみたいで,探した限り iEPG 番組サイトはどこにもなかった.
さりとて,レスポンスがクソ遅い RD-S1004K の番組表から録画予約とか無理すぎるので,テレビ王国に iEPG を復活する Chrome 拡張を作って公開してみた.
Chrome 拡張を初めて使ってみたけど,Web ページを好きなように書き換え放題なので,希望のリンクなんかを手軽に追加できる.
ただ今回はクリックしたら iepg ファイルを生成してダウンロードしないといけないのだけど,その方法はここに書いてあった.
これでもうしばらく戦えそうだヽ(´ー`)ノ
昔はテレビ王国以外にもいつくかあった iEPG 番組表サイトもいつの間にかことごとく止めてるみたいで,探した限り iEPG 番組サイトはどこにもなかった.
さりとて,レスポンスがクソ遅い RD-S1004K の番組表から録画予約とか無理すぎるので,テレビ王国に iEPG を復活する Chrome 拡張を作って公開してみた.
Chrome 拡張を初めて使ってみたけど,Web ページを好きなように書き換え放題なので,希望のリンクなんかを手軽に追加できる.
ただ今回はクリックしたら iepg ファイルを生成してダウンロードしないといけないのだけど,その方法はここに書いてあった.
これでもうしばらく戦えそうだヽ(´ー`)ノ
2019年2月9日土曜日
サクラエディタに改行をまたぐ検索・置換を実装する
●長いので結論だけ
サクラエディタに制限なしの「改行をまたぐ検索・置換」を実装してみた.
→https://github.com/yoshinrt/SakuraVz
●技術的な話
サクラエディタの前は WZ Editor しか使ってなかったから (そして Wz では普通にできていたから) 知らなかったけど,多くのエディタでは改行をまたぐ検索・置換ができない,または行数に制限がある.
これは,大抵のエディタでは内部で行単位でデータ管理しており,次の行データと連結して検索しない限り例えば /\n\n+/ のようなパターンはマッチしない.じゃあらかじめ何行連結してから検索するの? というところで行数制限が発生し,例えば EmEditor では設定した行数以上にマッチする検索は出来ないし,サクラエディタでは 1行も連結しないので改行をまたぐ検索は一切できない.
自分は s/\n\n+/\n/g みたいな感じで空行を圧縮する置換をたまにするので,行数制限は不便.というわけで,行数制限がない改行をまたぐ検索・置換をサクラエディタに実装することにした.
(ちなみに最初から全部連結しとけば? というのは効率・処理速度の観点でやらない)
サクラエディタでこれをやるには,正規表現エンジン (RE エンジン) 側に,パターンにマッチする・しないという結果以外にもう一つ「部分的に一致した」を返す機能が必須になる.
例えば,検索パターン /\n\n+/ で検索対象文字列 "aaa\n" を検索してもマッチはしないが,パターンの途中 (\n の一個目) まではマッチしているので,「途中まではマッチした」という結果を RE エンジンが返す.呼び出し側はその結果を受けて,検索対象文字列に次の行を連結して再度検索を行うことを,完全にマッチ or マッチ失敗するまで繰り返すことで,行数制限がない検索をすることができる.
この機能を持っている RE エンジンは自分が探した限り PCRE2 (partial match) か Hyperscan (streaming mode) しか見つからなかった.今回はより使いやすそうな PCRE2 を使用することにした.bregonig (onigmo) の機能不足により,検索パターンをこねくり回したりしていた記述も PCRE2 のオプション一発で解決できるので,ソースコードもスッキリ出来て一石二鳥ヽ(´ー`)ノ
ただし,PCRE2 では partial match モードな置換は出来ないので,予め partial match モードで検索し必要な行数を連結した文字列に対して,置換を行う必要があった.
サクラエディタに制限なしの「改行をまたぐ検索・置換」を実装してみた.
→https://github.com/yoshinrt/SakuraVz
●技術的な話
サクラエディタの前は WZ Editor しか使ってなかったから (そして Wz では普通にできていたから) 知らなかったけど,多くのエディタでは改行をまたぐ検索・置換ができない,または行数に制限がある.
これは,大抵のエディタでは内部で行単位でデータ管理しており,次の行データと連結して検索しない限り例えば /\n\n+/ のようなパターンはマッチしない.じゃあらかじめ何行連結してから検索するの? というところで行数制限が発生し,例えば EmEditor では設定した行数以上にマッチする検索は出来ないし,サクラエディタでは 1行も連結しないので改行をまたぐ検索は一切できない.
自分は s/\n\n+/\n/g みたいな感じで空行を圧縮する置換をたまにするので,行数制限は不便.というわけで,行数制限がない改行をまたぐ検索・置換をサクラエディタに実装することにした.
(ちなみに最初から全部連結しとけば? というのは効率・処理速度の観点でやらない)
サクラエディタでこれをやるには,正規表現エンジン (RE エンジン) 側に,パターンにマッチする・しないという結果以外にもう一つ「部分的に一致した」を返す機能が必須になる.
例えば,検索パターン /\n\n+/ で検索対象文字列 "aaa\n" を検索してもマッチはしないが,パターンの途中 (\n の一個目) まではマッチしているので,「途中まではマッチした」という結果を RE エンジンが返す.呼び出し側はその結果を受けて,検索対象文字列に次の行を連結して再度検索を行うことを,完全にマッチ or マッチ失敗するまで繰り返すことで,行数制限がない検索をすることができる.
この機能を持っている RE エンジンは自分が探した限り PCRE2 (partial match) か Hyperscan (streaming mode) しか見つからなかった.今回はより使いやすそうな PCRE2 を使用することにした.bregonig (onigmo) の機能不足により,検索パターンをこねくり回したりしていた記述も PCRE2 のオプション一発で解決できるので,ソースコードもスッキリ出来て一石二鳥ヽ(´ー`)ノ
ただし,PCRE2 では partial match モードな置換は出来ないので,予め partial match モードで検索し必要な行数を連結した文字列に対して,置換を行う必要があった.
2019年1月27日日曜日
SystemC で $clog2 を使う
ハードウェア設計では,メモリサイズに対するアドレスバスの bit 幅等で log2 を使いたい場面が出てくる (bit 幅の指定に使うので,コンパイル時定数であることが重要).
いつからか Verilog では $clog2() が使えるようになって便利だが,SystemC でそれに該当するものはなさげ.
仕方がないので,ダメ元で std::log() を使ってみる.
んー,と思っていたら,テンプレートメタプログラミングなる手法があること発見!
constexpr 使ったら std::log() でも行けそうな気がするけど,Vivado の C++ 高位合成コンパイラは C++11 ですら無いので使えない.┐('~`;)┌
いつからか Verilog では $clog2() が使えるようになって便利だが,SystemC でそれに該当するものはなさげ.
仕方がないので,ダメ元で std::log() を使ってみる.
●定義
#define BIT_WIDTH( n ) (( int )( log(( n ) * 2 - 1 ) / log( 2 )))
●使用
#define HOGE 1024
sc_uint<BIT_WIDTH( HOGE )> HOGE_t;
●VivadoHLS のログ
./hoge.h:39:27: error: non-type template argument of type 'int' is not an integral constant expression
typedef sc_uint<(( int )( log(( HOGE ) * 2 - 1 ) / log( 2 )))> HOGE_t;
~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
シミュレーションでは (g++ の最適化が強力なので) コンパイル時定数になってくれるので ok なんだけど,VivadoHLS の高位合成コンパイラでは怒られた.んー,と思っていたら,テンプレートメタプログラミングなる手法があること発見!
template<int num> struct BitWidthTmplate { enum { Val = BitWidthTmplate<num / 2>::Val + 1 }; };
template<> struct BitWidthTmplate<0> { enum { Val = 0 }; };
#define BIT_WIDTH( n ) ( BitWidthTmplate<( n ) - 1>::Val )
これだと VivadoHLS でも通ったヽ(´ー`)ノconstexpr 使ったら std::log() でも行けそうな気がするけど,Vivado の C++ 高位合成コンパイラは C++11 ですら無いので使えない.┐('~`;)┌
2019年1月12日土曜日
Intel の嫌がらせ
Intel 謹製の高速正規表現ライブラリであるところの hyperscan を使ってみようと思った.
ここ見ながら build してサンプル作って実行してみたら,
「ハンドルされない例外が 0x00007FF6BF7B5E4C (sample.exe) で発生しました: 0xC000001D: Illegal Instruction。」
オウフ.なかなか見ないエラーだな.
エラー起こしたアドレスの逆アセをみると「shlx」,これはどうやら BMI2 命令セット (AVX2 と同時に追加?) に含まれる命令っぽいのだが,うちの AMD A8 に載ってるわけがない.cmake が AVX2 の有無を認識してコンパイラオプション等をよきにはからってくれると思ってるんだけど,違うのだろうか? Intel CPU にしか hyperscan を使わせない嫌がらせか何か?
んーと思ったら,CMakeLists.txt で AVX2 を強制的に ON にしてるっぽい?
ここ見ながら build してサンプル作って実行してみたら,
「ハンドルされない例外が 0x00007FF6BF7B5E4C (sample.exe) で発生しました: 0xC000001D: Illegal Instruction。」
オウフ.なかなか見ないエラーだな.
エラー起こしたアドレスの逆アセをみると「shlx」,これはどうやら BMI2 命令セット (AVX2 と同時に追加?) に含まれる命令っぽいのだが,うちの AMD A8 に載ってるわけがない.cmake が AVX2 の有無を認識してコンパイラオプション等をよきにはからってくれると思ってるんだけど,違うのだろうか? Intel CPU にしか hyperscan を使わせない嫌がらせか何か?
んーと思ったら,CMakeLists.txt で AVX2 を強制的に ON にしてるっぽい?
set(ARCH_C_FLAGS "/arch:AVX2")
set(ARCH_CXX_FLAGS "/arch:AVX2")
これをコメントアウトしたら,無事 AMD A8 でも動いたヽ(´ー`)ノ
登録:
投稿 (Atom)















