-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlocal-search.xml
381 lines (180 loc) · 91.2 KB
/
local-search.xml
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>エルマ-ヨルシカ</title>
<link href="/2025/01/07/Elma/"/>
<url>/2025/01/07/Elma/</url>
<content type="html"><![CDATA[<style>p { font: 12pt Yu Mincho !important; }</style><p>雨とカプチーノ - ヨルシカ</p><p>詞:n-buna</p><p>曲:n-buna</p><p>編曲:n-buna</p><hr /><p>噓つきなんて わかって 触れて</p><p>エルマ まだ まだ痛いよ</p><p>もうさよならだって歌って</p><p>暮れて夜が来るまで</p><hr /><p>朝日の差す木漏れ日 僕とエルマ</p><p>まだ まだ眠いかい</p><p>初夏の初め近づく五月の森</p><hr /><p>歩きだした顔には花の雫</p><p>ほら 涙みたいだ</p><p>このまま欠伸をしよう</p><p>なんならまた椅子にでも座ろう</p><hr /><p>許せないことなんてないんだよ</p><p>君は優しくなんてなれる</p><hr /><p>このまま何処かの遠い国で</p><p>浅い夏の隙間に寝そべったまま</p><p>涙も言葉も出ないままで</p><p>ただ夜の深さも知らないままで</p><hr /><p>噓つきなんて わかって 触れて</p><p>エルマ まだ まだ痛いよ</p><p>もうさよならだって歌って</p><p>暮れて夜が来るまで</p><hr /><p>辛いことも苦しいことも何も見えないならわからないし</p><p>塞いだ目閉じたままで逃げた</p><p>月明かりの道を歩く</p><hr /><p>狭い部屋も冷たい夜も</p><p>眠い昼も 寂しい朝も</p><p>さよならの言葉越しに君の顔を見てる</p><hr /><p>このまま何処かの遠い国で</p><p>浅い夏の隙間に寝そべったまま</p><p>涙も言葉も出ないままで</p><p>ただ空の青さだけ見たままで</p><hr /><p>ただ君と終わりも知らないままで</p><hr /><p>噓つきなんて わかって 触れて</p><p>エルマ まだ まだ痛いよ</p><p>もうさよならだって歌って</p><p>暮れて夜が来るまで</p>]]></content>
<categories>
<category>日语</category>
</categories>
</entry>
<entry>
<title>少女A</title>
<link href="/2025/01/05/%E5%B0%91%E5%A5%B3A/"/>
<url>/2025/01/05/%E5%B0%91%E5%A5%B3A/</url>
<content type="html"><![CDATA[<style>p { font: 12pt Yu Mincho !important; }</style><p>神様のダンス - ヨルシカ</p><p>作詞:椎名もた(ぽわぽわP)</p><p>作曲:椎名もた(ぽわぽわP)</p><p>唄:鏡音リン</p><p>中文翻譯:https://home.gamer.com.tw/artwork.php?sn=5816671</p><hr /><p>僕の命ってったって 誰の命っつったって</p><p>即使說這是我的生命 即使說這是他人的生命</p><p>時々 公平に 裁かれるもんなんでしょ</p><p>偶爾 也會被公平地 受到裁決對吧</p><p>暗い空にやってきた 鬱を連れてやってきた</p><p>我抵達了漆黑的天空 並帶來了憂愁</p><p>時々雨 総計に 頼り切りだ どうしよう</p><p>偶爾下起了雨 我總是 依賴著它 該怎麼辦呢</p><p>朽ちるまでの愛憎を 朽ちるまでの愛憎を</p><p>接受枯朽之前的愛憎 枯朽之前的愛憎的你</p><p>飲み込む君 簡単に 微笑む君 どうして</p><p>簡單地 露出微笑的你 為什麼</p><p>言葉を書く 曖昧に 言葉を書く 曖昧に</p><p>曖昧地 書寫著話語 曖昧地 書寫著話語</p><p>伝わりきらんないから 君だけをさ 信じて</p><p>因為根本無法全數傳達出去啊 所以我只 相信你一人</p><p>捨ててきた夢をあつめて</p><p>我開始收集起之前我所捨棄的夢想</p><p>ちょっと ちょっと 間違えたから</p><p>因為這其中有些 有些 錯誤啊</p><p>ああ 「時に 時に 躓いたって、」</p><p>啊啊 「即使偶爾 偶爾 受到挫折、」 也還是</p><p>寒い寒い寒い寒い寒い</p><p>好冷好冷好冷好冷好冷</p><p>寒い寒い寒い寒い寒い</p><p>好冷好冷好冷好冷好冷</p><p>寒い寒い寒い寒い 言い寄らないで</p><p>好冷好冷好冷好冷 別如此求愛啊</p><p>ああ 君の君の君の声が</p><p>啊啊 你的你的你的聲音十分</p><p>遠い遠い遠い遠い遠い</p><p>遙遠遙遠遙遠遙遠遙遠</p><p>遠い遠い遠い遠い遠い</p><p>遙遠遙遠遙遠遙遠遙遠</p><p>遠い遠い遠い遠い 傷つけないで</p><p>遙遠遙遠遙遠遙遠 別傷害我啊</p><p>何番目でも 何番目でも</p><p>不管是第幾個 不管是第幾個</p><p>僕が僕であるために?</p><p>我也希望我能保有自我?</p><p>契り集め持ってきた 契り集め持ってきた</p><p>我收集起來各種約定 我收集起來各種約定</p><p>あの日の間違いを 飲み込むのが苦るしくて</p><p>要理解那一天的誤會 實在是過於痛苦</p><p>朽ちるまでの愛憎を 朽ちるまでの愛憎を</p><p>接受枯朽之前的愛憎 枯朽之前的愛憎的你</p><p>飲み込む君 簡単に 微笑む君 どうして</p><p>簡單地 露出微笑的你 為什麼</p><p>「子供だましの花ふたつ、」</p><p>「欺騙小孩的兩束花、」</p><p>きっと きっと 諦めたから?</p><p>一定 一定是因為 我放棄了?</p><p>ああ 遠い夢を追いかけてさ</p><p>啊啊 我追趕著遙遠的夢想 但夢想卻十分</p><p>早い早い早い早い早い</p><p>快速快速快速快速快速</p><p>早い早い早い早い早い</p><p>快速快速快速快速快速</p><p>早い早い早い早い 追いつけないよ</p><p>快速快速快速快速 我根本無法追上啊</p><p>捨てきれず残した思いが</p><p>我無法完全捨棄並遺留下來的感受讓人十分</p><p>憎い憎い憎い憎い憎い</p><p>憎恨憎恨憎恨憎恨憎恨</p><p>憎い憎い憎い憎い憎い</p><p>憎恨憎恨憎恨憎恨憎恨</p><p>憎い憎い憎い憎い 許されないの?</p><p>憎恨憎恨憎恨憎恨 不被他人原諒嗎?</p><p>ああ 夢を夢を見てたはずが</p><p>啊啊 我本應該正在做夢 但卻感到了</p><p>怖い怖い怖い怖い怖い</p><p>恐懼恐懼恐懼恐懼恐懼</p><p>怖い怖い怖い怖い怖い</p><p>恐懼恐懼恐懼恐懼恐懼</p><p>怖い怖い怖い怖い 近づかないで</p><p>恐懼恐懼恐懼恐懼 別靠近我啊</p><p>合言葉を繰り返すだけ</p><p>我只是不斷重複著暗語而已</p><p>寒い寒い寒い寒い寒い</p><p>好冷好冷好冷好冷好冷</p><p>寒い寒い寒い寒い寒い</p><p>好冷好冷好冷好冷好冷</p><p>寒い寒い寒い寒い お願いだから</p><p>好冷好冷好冷好冷 拜託你</p><p>何番目でも 何番目でも</p><p>不管是第幾個 不管是第幾個</p><p>僕が僕であるために…</p><p>我也希望我能保有自我…</p>]]></content>
<categories>
<category>日语</category>
</categories>
</entry>
<entry>
<title>雨とカプチーノ - ヨルシカ</title>
<link href="/2024/12/30/%E9%9B%A8%E3%81%A8%E3%82%AB%E3%83%97%E3%83%81%E3%83%BC%E3%83%8E%20-%20%E3%83%A8%E3%83%AB%E3%82%B7%E3%82%AB/"/>
<url>/2024/12/30/%E9%9B%A8%E3%81%A8%E3%82%AB%E3%83%97%E3%83%81%E3%83%BC%E3%83%8E%20-%20%E3%83%A8%E3%83%AB%E3%82%B7%E3%82%AB/</url>
<content type="html"><![CDATA[<style>p { font: 12pt Yu Mincho !important; }</style><p>雨とカプチーノ - ヨルシカ</p><p>詞:n-buna</p><p>曲:n-buna</p><p>編曲:n-buna</p><hr /><p>灰色に白んだ言葉はカプチーノみたいな色してる</p><p>言い訳はいいよ 窓辺に置いてきて</p><p>数え切れないよ</p><hr /><p>灰色に白んだ心はカプチーノみたいな色をしてる</p><p>言い訳はいいよ <ruby>呷<rt>あお</rt></ruby>ろうカプチーノ</p><p><ruby>戯<rt>おど</rt></ruby>けた振りをして</p><hr /><p>さぁ<ruby>揺蕩<rt>たゆた</rt></ruby>うように雨流れ</p><p>僕らに<ruby>嵐<rt>あら</rt></ruby>す花に溺れ</p><p>君が<ruby>褪<rt>あ</rt></ruby>せないような思い出を</p><p>どうか、どうか、どうか君が溢れないように</p><hr /><p><ruby>波<rt>なみ</rt></ruby>待つ海岸 <ruby>紅<rt>くれない</rt></ruby>夕差す日</p><p>窓に反射して</p><p>八月のヴィスビー <ruby>潮騒<rt>しおさい</rt></ruby></p><p>待ちぼうけ 海風一つで</p><hr /><p>夏泳いだ花の白さ、<ruby>宵<rt>よい</rt></ruby>の雨</p><p>流れる夜に溺れ</p><p>誰も褪せないような花一つ</p><p>どうか、どうか、どうか胸の内側に挿して</p><hr /><p>ずっとおかしいんだ</p><p>生き方一つを教えてほしいだけ</p><p>払えるものなんて僕にはもうないけど</p><p>何も答えられないなら言葉一つでもいいよ</p><p>わからないよ</p><p>本当にわからないんだよ</p><hr /><p>さぁ<ruby>揺蕩<rt>たゆた</rt></ruby>うように雨流れ</p><p>僕らに<ruby>嵐<rt>あら</rt></ruby>す花に溺れ</p><p>君が<ruby>褪<rt>あ</rt></ruby>せないように書く詩を</p><p>どうか、どうか、どうか今も忘れないように</p><p>また一つ夏が終わって、花一つを胸に抱いて、</p><p>流れる<ruby>目蓋<rt>まぶた</rt></ruby>の裏で</p><p>君が<ruby>褪<rt>あ</rt></ruby>せないようにこの詩を</p><p>どうか、どうか君が溢れないように</p><hr />]]></content>
<categories>
<category>日语</category>
</categories>
</entry>
<entry>
<title>神様のダンス - ヨルシカ</title>
<link href="/2024/12/27/%E7%A5%9E%E6%A7%98%E3%81%AE%E3%83%80%E3%83%B3%E3%82%B9%20-%20%E3%83%A8%E3%83%AB%E3%82%B7%E3%82%AB/"/>
<url>/2024/12/27/%E7%A5%9E%E6%A7%98%E3%81%AE%E3%83%80%E3%83%B3%E3%82%B9%20-%20%E3%83%A8%E3%83%AB%E3%82%B7%E3%82%AB/</url>
<content type="html"><![CDATA[<style>p { font: 12pt Yu Mincho !important; }</style><p>神様のダンス - ヨルシカ</p><p>詞:n-buna</p><p>曲:n-buna</p><p>編曲:n-buna</p><hr /><p>忘れるなんて酷いだろ</p><p>幸せになんてなるものか</p><p>色のない何かが咲いた</p><p>君のいない夏に咲いた</p><hr /><p>人に笑われたくないから</p><p>怯えるように下を向く</p><p>心より大事な何かが</p><p>あってたまるものか</p><hr /><p>暮れない夕に茜追い付いて</p><p>君を染め抜いた</p><p>見えないように僕を追い越して</p><p>行かないで</p><hr /><p>僕たち神様なんて知らん顔</p><p>どこまでだって行ける</p><p>なぁ、心まで醜い僕らだ</p><p>世界は僕らのものだ</p><hr /><p>音楽だけでいいんだろ</p><p>他人に合わせて歩くなよ</p><p>教えてくれたのはあんたじゃないか</p><hr /><p>どうだっていいよ、このまま遠くへ</p><p>誰も知らない場所で月明かりを探すのだ</p><hr /><p>名もない花が綺麗のだ</p><p>どうでもいいことばっかだ</p><p>君の口癖が感染ってる</p><p>喉の真下には君がいる</p><hr /><p>言葉も生活も愛想も</p><p>全て捨ててこそ音楽だ</p><p>その価値も知らないあんたに</p><p>わかって堪るものか</p><hr /><p>暮れない夕に茜追い付いて</p><p>僕を染め抜いた</p><p>いつか時間が全て追い抜いて</p><p>消えないで</p><hr /><p>僕たち神様なんて知らん顔</p><p>世界の全部が欲しい</p><p>なぁ心まで醜いあんたの、想い出全部をくれよ</p><p>価値観だって自由なら</p><p>人を傷付けていいだろ</p><p>教えなかったのはあんたじゃないか</p><hr /><p>どうだっていいよ、このまま遠くへ</p><p>誰も見てない場所で生きる真似をしてるのさ</p><p>酷い顔で踊るのさ</p><p>胸も痛いままで</p><hr /><p>神様僕たちなんて知らん顔</p><p>どこまでだって行ける</p><p>なぁ、言葉が世界だと云うなら、世界は僕らのものだ</p><p>忘れるなんて酷いだろ</p><p>幸せになんてなれるかよ</p><p>僕を歪めたのはあんたじゃないか</p><hr /><p>そうだった、僕はこのまま遠くへ</p><p>誰も知らない場所で月明かりを探すのだ</p>]]></content>
<categories>
<category>日语</category>
</categories>
</entry>
<entry>
<title>2024年12月N2游记</title>
<link href="/2024/12/01/2024%E5%B9%B412%E6%9C%88N2%E6%B8%B8%E8%AE%B0/"/>
<url>/2024/12/01/2024%E5%B9%B412%E6%9C%88N2%E6%B8%B8%E8%AE%B0/</url>
<content type="html"><![CDATA[<p>今天去成信工参加了N2考试。</p><p>6:30 起床。6:52坐上了提前预约好的出租车。昨天预约的其实是7点,但是因为司机师傅跟我都提前到了,所以就提前出发了。因为时间比较早,路上的车也很少,司机师傅一路飞驰<spanclass="heimu"title="你知道的太多了">超速</span>行驶,结果七点半就抵达了(高德地图预计的是八点)。刷身份证进入校园,在四教门口一直复习等到通知入场,等待考试开始。</p><figure><img src="https://i.imgur.com/WENuah7.jpg" alt="进校后前往考点的路上" /><figcaption aria-hidden="true">进校后前往考点的路上</figcaption></figure><figure><img src="https://i.imgur.com/RsobRw9.jpg"alt="考试结束,太阳终于出来了" /><figcaption aria-hidden="true">考试结束,太阳终于出来了</figcaption></figure><p>说一下我对这次的N2题目的感受吧。感觉上第一部分(词汇语法阅读)比往年都要简单,应该说这是我做得最顺利最舒服的一次。其中词汇部分考察的几个单词我刚好在前几天<spanclass="heimu"title="你知道的太多了">为了诅咒舍友</span>查过,比如厚かましい和ずうずうしい这两个单词,结果这次全都考了,很走运。另外,「仕草」这个单词竟然也考了,没记错的话我第一次见到这个单词是在ずとまよ的「MILABO」歌词里,是动作、举止的意思,也考到了。另外,语法部分的てからでないと这个语法我在前几天做往年N2真题的时候遇到了,因此印象比较深。</p><p>考场的听力是用CD机+小音箱播放的,真的一言难尽,回声特别明显,男声完全糊在一起了,真的听不清。考试之后我发现很多考点都有这样的情况,大家都在抱怨。。这次我也都是半听半根据套路猜的。哎,希望听力能超过19分吧。相信赋分制!</p><figure><img src="https://i.imgur.com/jGYRtsn.jpg"alt="吃完汉堡回到校园。果然还是成电的风景更好看啊..." /><figcaptionaria-hidden="true">吃完汉堡回到校园。果然还是成电的风景更好看啊...</figcaption></figure>]]></content>
<categories>
<category>日语</category>
</categories>
</entry>
<entry>
<title>HDLBits刷题笔记</title>
<link href="/2024/11/28/Verilog/"/>
<url>/2024/11/28/Verilog/</url>
<content type="html"><![CDATA[<p>最近试了一下Verilog刷题网站HDLBits,感觉还是蛮有意思的。这里记录一下刷题的一些收获。</p><h2 id="bit-slicing的简化语法">Bit slicing的简化语法</h2><p><em><strong>Bit slicing</strong> ("Indexed vector part select", sinceVerilog-2001) has an even more compact syntax.</em></p><p>来源:Circuits-Multiplexers-Mux256to1v</p><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs verilog"><span class="hljs-keyword">module</span> top_module(<br> <span class="hljs-keyword">input</span> [<span class="hljs-number">1023</span>:<span class="hljs-number">0</span>] in, <span class="hljs-comment">// 1024-bit input</span><br> <span class="hljs-keyword">input</span> [<span class="hljs-number">7</span>:<span class="hljs-number">0</span>] sel, <span class="hljs-comment">// 8-bit select input</span><br> <span class="hljs-keyword">output</span> [<span class="hljs-number">3</span>:<span class="hljs-number">0</span>] out <span class="hljs-comment">// 4-bit output</span><br>);<br><br> <span class="hljs-keyword">assign</span> out = in[sel*<span class="hljs-number">4</span> +: <span class="hljs-number">4</span>]; <span class="hljs-comment">// Compact syntax for bit slicing</span><br><br><span class="hljs-keyword">endmodule</span><br></code></pre></td></tr></table></figure><p><code>in[sel*4 +: 4]</code> 是 Verilog-2001 中引入的 “indexed partselect” 语法:<br /><code>sel*4</code> 表示选择从哪个位开始(包含该位)。<br /><code>+: 4</code>表示从 sel*4 开始,选择 4 位宽的数据。<br />这个语法非常简洁,并且可以避免合成工具无法推断切片宽度为常数的问题。</p><p>类似的还有<code>assign out = in[sel*4+3 -: 4];</code></p><h2 id="加法器">加法器</h2><p><em>Create a 100-bit binary adder. The adder adds two 100-bit numbersand a carry-in to produce a 100-bit sum and carry out.</em></p><p><strong>正解:没有必要重新构造全加器模块了,直接使用现有的运算符号。</strong><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs verilog"><span class="hljs-keyword">module</span> top_module (<br><span class="hljs-keyword">input</span> [<span class="hljs-number">99</span>:<span class="hljs-number">0</span>] a,<br><span class="hljs-keyword">input</span> [<span class="hljs-number">99</span>:<span class="hljs-number">0</span>] b,<br><span class="hljs-keyword">input</span> cin,<br><span class="hljs-keyword">output</span> cout,<br><span class="hljs-keyword">output</span> [<span class="hljs-number">99</span>:<span class="hljs-number">0</span>] sum<br>);<br><br><span class="hljs-comment">// The concatenation {cout, sum} is a 101-bit vector.</span><br><span class="hljs-keyword">assign</span> {cout, sum} = a+b+cin;<br><br><span class="hljs-keyword">endmodule</span><br></code></pre></td></tr></table></figure></p><h2 id="卡诺图的两种形式">卡诺图的两种形式</h2><p>77.<em>A single-output digital system with four inputs (a,b,c,d)generates a logic-1 when 2, 7, or 15 appears on the inputs, and alogic-0 when 0, 1, 4, 5, 6, 9, 10, 13, or 14 appears. The inputconditions for the numbers 3, 8, 11, and 12 never occur in this system.For example, 7 corresponds to a,b,c,d being set to 0,1,1,1,respectively.</em></p><p><em>Determine the output out_sop in minimum SOP form, and the outputout_pos in minimum POS form.</em></p><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs verilog"><span class="hljs-keyword">module</span> top_module (<br> <span class="hljs-keyword">input</span> a,<br> <span class="hljs-keyword">input</span> b,<br> <span class="hljs-keyword">input</span> c,<br> <span class="hljs-keyword">input</span> d,<br> <span class="hljs-keyword">output</span> out_sop,<br> <span class="hljs-keyword">output</span> out_pos<br>); <br> <span class="hljs-keyword">assign</span> out_sop = (c&d) | (~a&~b&c&~d);<br> <span class="hljs-keyword">assign</span> out_pos = c & (~b|d) & (~a|d);<br><span class="hljs-keyword">endmodule</span><br></code></pre></td></tr></table></figure><h2 id="dff8">Dff8</h2><p><em>Create 8 D flip-flops. All DFFs should be triggered by thepositive edge of clk.</em></p><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs verilog"><span class="hljs-keyword">module</span> top_module(<br><span class="hljs-keyword">input</span> clk,<br><span class="hljs-keyword">input</span> [<span class="hljs-number">7</span>:<span class="hljs-number">0</span>] d,<br><span class="hljs-keyword">output</span> <span class="hljs-keyword">reg</span> [<span class="hljs-number">7</span>:<span class="hljs-number">0</span>] q);<br><br><span class="hljs-comment">// Because q is a vector, this creates multiple DFFs.</span><br><span class="hljs-keyword">always</span> @(<span class="hljs-keyword">posedge</span> clk)<br>q <= d;<br><br><span class="hljs-keyword">endmodule</span><br></code></pre></td></tr></table></figure><p>因为q在这里是一个向量,所以可以一次性创建出8个D触发器。</p><h2 id="异步复位">异步复位</h2><p>异步复位和同步复位相比,唯一的区别在于always的敏感列表中包含了复位信号reset。</p><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><code class="hljs verilog"><span class="hljs-keyword">module</span> top_module(<br><span class="hljs-keyword">input</span> clk,<br><span class="hljs-keyword">input</span> [<span class="hljs-number">7</span>:<span class="hljs-number">0</span>] d,<br><span class="hljs-keyword">input</span> areset,<br><span class="hljs-keyword">output</span> <span class="hljs-keyword">reg</span> [<span class="hljs-number">7</span>:<span class="hljs-number">0</span>] q);<br><br><span class="hljs-comment">// The only difference in code compared to synchronous reset is in the sensitivity list.</span><br><span class="hljs-keyword">always</span> @(<span class="hljs-keyword">posedge</span> clk, <span class="hljs-keyword">posedge</span> areset)<br><span class="hljs-keyword">if</span> (areset)<br>q <= <span class="hljs-number">0</span>;<br><span class="hljs-keyword">else</span><br>q <= d;<br><br><br><span class="hljs-comment">// In Verilog, the sensitivity list looks strange. The FF's reset is sensitive to the</span><br><span class="hljs-comment">// *level* of areset, so why does using "posedge areset" work?</span><br><span class="hljs-comment">// To see why it works, consider the truth table for all events that change the input </span><br><span class="hljs-comment">// signals, assuming clk and areset do not switch at precisely the same time:</span><br><br><span class="hljs-comment">// clkaresetoutput</span><br><span class="hljs-comment">// x 0->1q <= 0; (because areset = 1)</span><br><span class="hljs-comment">// x 1->0no change (always block not triggered)</span><br><span class="hljs-comment">// 0->1 0q <= d; (not resetting)</span><br><span class="hljs-comment">// 0->1 1q <= 0; (still resetting, q was 0 before too)</span><br><span class="hljs-comment">// 1->0 xno change (always block not triggered)</span><br><br><span class="hljs-keyword">endmodule</span><br></code></pre></td></tr></table></figure><h2 id="problem-85-dff-with-byte-enabledff16e">Problem 85 : DFF withbyte enable(Dff16e)</h2><p><em>Create 16 D flip-flops. It's sometimes useful to only modifyparts of a group of flip-flops. The byte-enable inputs control whethereach byte of the 16 registers should be written to on that cycle.byteena[1] controls the upper byte d[15:8], while byteena[0] controlsthe lower byte d[7:0].</em></p><p><em>resetn is a synchronous, active-low reset.</em></p><p><em>All DFFs should be triggered by the positive edge ofclk.</em></p><p>这道题的要求是创建一个 16 路D触发器。部分情况下,只需要多路触发器中的一部分触发器工作,此时可以通过ena 使能端进行控制。使能端 ena 信号有效时,触发器在时钟上升沿工作。</p><p><strong>注意:当byteena=2'b11时,两个部分均可被写入,因此要慎重选择if~else的结构</strong></p><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><code class="hljs verilog"><span class="hljs-keyword">module</span> top_module (<br> <span class="hljs-keyword">input</span> clk,<br> <span class="hljs-keyword">input</span> resetn,<br> <span class="hljs-keyword">input</span> [<span class="hljs-number">1</span>:<span class="hljs-number">0</span>] byteena,<br> <span class="hljs-keyword">input</span> [<span class="hljs-number">15</span>:<span class="hljs-number">0</span>] d,<br> <span class="hljs-keyword">output</span> [<span class="hljs-number">15</span>:<span class="hljs-number">0</span>] q<br>);<br><br> <span class="hljs-keyword">always</span> @(<span class="hljs-keyword">posedge</span> clk) <span class="hljs-keyword">begin</span><br> <span class="hljs-keyword">if</span>(~resetn)<br> q <= <span class="hljs-number">16'b0</span>;<br> <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(byteena[<span class="hljs-number">1</span>] || byteena[<span class="hljs-number">0</span>] ) <span class="hljs-keyword">begin</span><span class="hljs-comment">//注意这个地方要兼顾2'b11的情况</span><br> <span class="hljs-keyword">if</span>(byteena[<span class="hljs-number">1</span>])<br> q[<span class="hljs-number">15</span>:<span class="hljs-number">8</span>] <= d[<span class="hljs-number">15</span>:<span class="hljs-number">8</span>];<br> <span class="hljs-keyword">if</span>(byteena[<span class="hljs-number">0</span>])<br> q[<span class="hljs-number">7</span>:<span class="hljs-number">0</span>] <= d[<span class="hljs-number">7</span>:<span class="hljs-number">0</span>];<br> <span class="hljs-keyword">end</span><br> <span class="hljs-keyword">end</span><br> <br><span class="hljs-keyword">endmodule</span><br></code></pre></td></tr></table></figure><h2 id="边沿捕获">边沿捕获</h2><p>96.当reset信号为高时,强制输出为低电平;当输入信号in出现下降沿时,输出out保持为1,也就是说只有reset能将out拉低。</p><p><img src="https://i.imgur.com/0iKObkG.png" /></p><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><code class="hljs verilog"><span class="hljs-keyword">module</span> top_module (<br> <span class="hljs-keyword">input</span> clk,<br> <span class="hljs-keyword">input</span> reset,<br> <span class="hljs-keyword">input</span> [<span class="hljs-number">31</span>:<span class="hljs-number">0</span>] in,<br> <span class="hljs-keyword">output</span> [<span class="hljs-number">31</span>:<span class="hljs-number">0</span>] out<br>);<br> <span class="hljs-keyword">reg</span> [<span class="hljs-number">31</span>:<span class="hljs-number">0</span>] temp;<br> <br> <span class="hljs-keyword">always</span> @(<span class="hljs-keyword">posedge</span> clk) <span class="hljs-keyword">begin</span><br> <br> temp <= in;<span class="hljs-comment">//record the previous state.</span><br> <br> <span class="hljs-keyword">if</span>(reset)<br> out <= <span class="hljs-number">32'b0</span>;<br> <span class="hljs-keyword">else</span><br> out = (temp & ~in) | (out);<span class="hljs-comment">//这里是关键,|out 保证了原来是1的位仍保持为1</span><br> <span class="hljs-keyword">end</span><br><br><span class="hljs-keyword">endmodule</span><br></code></pre></td></tr></table></figure><h2 id="双边沿触发器">双边沿触发器</h2><p>Verilog的always语句块的敏感变量列表不能同时支持posedge和negedge,自己单独搭建电路实现双边沿触发的功能。</p><p>时序图如下:</p><p><img src="https://i.imgur.com/iMKGS2u.png" /></p><p>利用二选一数据选择器的实现思路:</p><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><code class="hljs verilog"><span class="hljs-keyword">module</span> top_module (<br> <span class="hljs-keyword">input</span> clk,<br> <span class="hljs-keyword">input</span> d,<br> <span class="hljs-keyword">output</span> q<br>);<br> <span class="hljs-keyword">reg</span> q1, q2;<br> <span class="hljs-comment">//这里来实现clk的上升沿与下降沿</span><br> <span class="hljs-keyword">assign</span> q = clk?q1:q2;<br><br> <span class="hljs-keyword">always</span> @ (<span class="hljs-keyword">posedge</span> clk)<br> <span class="hljs-keyword">begin</span><br> q1 <= d;<br> <span class="hljs-keyword">end</span><br><br> <span class="hljs-keyword">always</span> @ (<span class="hljs-keyword">negedge</span> clk)<br> <span class="hljs-keyword">begin</span><br> q2 <= d; <br> <span class="hljs-keyword">end</span><br><br><span class="hljs-keyword">endmodule</span><br></code></pre></td></tr></table></figure><h2 id="暂停计数器">暂停计数器</h2><p>Problem 101 Slow decade counter</p><p>在时钟上升沿对0~9递增计数,高电平复位,当slowena为低时暂停计数。</p><p><img src="https://i.imgur.com/tBfNOqY.png" /></p><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><code class="hljs verilog"><span class="hljs-keyword">module</span> top_module (<br> <span class="hljs-keyword">input</span> clk,<br> <span class="hljs-keyword">input</span> slowena,<br> <span class="hljs-keyword">input</span> reset,<br> <span class="hljs-keyword">output</span> [<span class="hljs-number">3</span>:<span class="hljs-number">0</span>] q);<br> <br> <span class="hljs-keyword">always</span> @(<span class="hljs-keyword">posedge</span> clk) <span class="hljs-keyword">begin</span><br> <span class="hljs-keyword">if</span>(reset)<br> q <= <span class="hljs-number">4'b0</span>;<br> <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (slowena)<span class="hljs-comment">//the counter can increment only when slowena is '1'</span><br> <span class="hljs-keyword">begin</span><br> <span class="hljs-keyword">if</span> (q == <span class="hljs-number">4'd9</span>) <span class="hljs-comment">//counter overflow</span><br> q <= <span class="hljs-number">4'b0</span>;<br> <span class="hljs-keyword">else</span> <span class="hljs-comment">//normal counting</span><br> q <= q + <span class="hljs-number">1'b1</span>;<br> <span class="hljs-keyword">end</span><br> <span class="hljs-keyword">end</span><br><span class="hljs-keyword">endmodule</span><br></code></pre></td></tr></table></figure><h2 id="problem-104-4-digit-decimal-counter">Problem 104 4-digit decimalcounter</h2><p><em>Build a 4-digit BCD (binary-coded decimal) counter. Each decimaldigit is encoded using 4 bits: q[3:0] is the ones digit, q[7:4] is thetens digit, etc. For digits [3:1], also output an enable signalindicating when each of the upper three digits should beincremented.</em></p><p><em>You may want to instantiate or modify some one-digit decadecounters.</em></p><p>这道题要求我们设计一个四位BCD码计数器。由于每一位BCD码要用4位二进制数表示,因此输出为16位二进制数。基本思路是先建立一个一位BCD码计数器的基本单元,再实例化得到4位的。</p><p>个人觉得这里比较难搞的地方是怎么处理进位。在组合逻辑电路中,4位BCD码加法器的进位只需要把低位端的进位输出连接到高位的进位输入即可。对于时序逻辑来说,进位也可以理解为<strong>使能</strong>,计数可以理解为<strong>翻转</strong>,只有当计数溢出时才使能一次高位,使高位在时钟信号到来的时候翻转一次。</p><p>以T触发器构成的计数器为例,T触发器有以下特征:</p><ul><li>当使能信号T=1时,每次触发会使输出翻转;</li><li>当使能信号T=0时,输出保持不变;</li></ul><p>计数器在递增计数的过程中,计数值的变化体现为位的翻转,低位对高位的影响体现在只有当低位全为1时高位才可翻转(进位),用激励方程来描述就是</p><p><img src="https://i.imgur.com/TKEXS3Q.png" /></p><p>对应的硬件电路为</p><p><img src="https://i.imgur.com/TToOypW.png" /></p><p>对于BCD计数器来说也是一样的道理。4位BCD计数器由4个BCD技术单元组成,每一个单元都有使能端,以最高位为例,只有当四位BCD的低三位全为<code>4'b1001</code>时,最高位才被使能,这只需要用与门就可以实现,类似上图中的G1,G2,G3。用Verilog来描述的话,可以是<code>.ena(q[11:8] == 4'd9 && q[7:4] == 4'd9 && q[3:0] == 4'd9),</code>或者直接写为<code>.ena(q[11:0] == 12'h999),</code>,二者是等价的。</p><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br></pre></td><td class="code"><pre><code class="hljs verilog"><span class="hljs-keyword">module</span> top_module (<br> <span class="hljs-keyword">input</span> clk,<br> <span class="hljs-keyword">input</span> reset, <span class="hljs-comment">// Synchronous active-high reset</span><br> <span class="hljs-keyword">output</span> [<span class="hljs-number">3</span>:<span class="hljs-number">1</span>] ena,<br> <span class="hljs-keyword">output</span> [<span class="hljs-number">15</span>:<span class="hljs-number">0</span>] q);<br><br> BCDadd counter0 (<br> <span class="hljs-variable">.reset</span>(reset),<br> <span class="hljs-variable">.ena</span>(<span class="hljs-number">1'b1</span>),<br> <span class="hljs-variable">.clk</span>(clk),<br> <span class="hljs-variable">.q</span>(q[<span class="hljs-number">3</span>:<span class="hljs-number">0</span>])<br> );<br> BCDadd counter1 (<br> <span class="hljs-variable">.reset</span>(reset),<br> <span class="hljs-variable">.ena</span>(q[<span class="hljs-number">3</span>:<span class="hljs-number">0</span>] == <span class="hljs-number">4'b1001</span>),<br> <span class="hljs-variable">.clk</span>(clk),<br> <span class="hljs-variable">.q</span>(q[<span class="hljs-number">7</span>:<span class="hljs-number">4</span>])<br> ); <br> BCDadd counter2 (<br> <span class="hljs-variable">.reset</span>(reset),<br> <span class="hljs-variable">.ena</span>(q[<span class="hljs-number">7</span>:<span class="hljs-number">0</span>] == <span class="hljs-number">8'h99</span>),<br> <span class="hljs-variable">.clk</span>(clk),<br> <span class="hljs-variable">.q</span>(q[<span class="hljs-number">11</span>:<span class="hljs-number">8</span>])<br> ); <br> BCDadd counter3 (<br> <span class="hljs-variable">.reset</span>(reset),<br> <span class="hljs-variable">.ena</span>(q[<span class="hljs-number">11</span>:<span class="hljs-number">0</span>] == <span class="hljs-number">12'h999</span>),<br> <span class="hljs-variable">.clk</span>(clk),<br> <span class="hljs-variable">.q</span>(q[<span class="hljs-number">15</span>:<span class="hljs-number">12</span>])<br> ); <br> <br> <span class="hljs-keyword">assign</span> ena[<span class="hljs-number">3</span>:<span class="hljs-number">1</span>] = {q[<span class="hljs-number">11</span>:<span class="hljs-number">0</span>]==<span class="hljs-number">12'h999</span>, q[<span class="hljs-number">7</span>:<span class="hljs-number">0</span>] == <span class="hljs-number">8'h99</span>, q[<span class="hljs-number">3</span>:<span class="hljs-number">0</span>] == <span class="hljs-number">4'b1001</span>};<br> <br><span class="hljs-keyword">endmodule</span><br><br><span class="hljs-keyword">module</span> BCDadd (<br> <span class="hljs-keyword">input</span> reset,<br> <span class="hljs-keyword">input</span> ena,<br> <span class="hljs-keyword">input</span> clk,<br> <span class="hljs-keyword">output</span> <span class="hljs-keyword">reg</span> [<span class="hljs-number">3</span>:<span class="hljs-number">0</span>] q<br>);<br> <span class="hljs-keyword">always</span> @(<span class="hljs-keyword">posedge</span> clk) <span class="hljs-keyword">begin</span><br> <span class="hljs-keyword">if</span> (reset)<br> q <= <span class="hljs-number">4'b0</span>;<br> <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (ena) <span class="hljs-keyword">begin</span><br> <span class="hljs-keyword">if</span> (q == <span class="hljs-number">4'b1001</span>)<br> q <= <span class="hljs-number">4'b0</span>;<br> <span class="hljs-keyword">else</span> <br> q <= q + <span class="hljs-number">1'b1</span>;<br> <span class="hljs-keyword">end</span><br> <span class="hljs-keyword">end</span><br><span class="hljs-keyword">endmodule</span><br><br></code></pre></td></tr></table></figure><h2 id="lfsr">LFSR</h2><p>Linear-feedback shift register,线性反馈移位寄存器 未完待续</p><p><img src="https://i.imgur.com/yZmHE3W.png" /></p><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs verilog"><span class="hljs-keyword">module</span> top_module (<br><span class="hljs-keyword">input</span> [<span class="hljs-number">2</span>:<span class="hljs-number">0</span>] SW, <span class="hljs-comment">// R</span><br><span class="hljs-keyword">input</span> [<span class="hljs-number">1</span>:<span class="hljs-number">0</span>] KEY, <span class="hljs-comment">// L and clk</span><br><span class="hljs-keyword">output</span> <span class="hljs-keyword">reg</span> [<span class="hljs-number">2</span>:<span class="hljs-number">0</span>] LEDR<br> ); <span class="hljs-comment">// Q</span><br><br> <span class="hljs-keyword">wire</span> clk = KEY[<span class="hljs-number">0</span>];<br> <span class="hljs-keyword">wire</span> l = KEY[<span class="hljs-number">1</span>];<br> <span class="hljs-keyword">wire</span> [<span class="hljs-number">2</span>:<span class="hljs-number">0</span>] d = l ? SW : {LEDR[<span class="hljs-number">1</span>]^LEDR[<span class="hljs-number">2</span>],LEDR[<span class="hljs-number">0</span>],LEDR[<span class="hljs-number">2</span>]};<br> <br> <span class="hljs-keyword">always</span> @(<span class="hljs-keyword">posedge</span> clk) <span class="hljs-keyword">begin</span><br> LEDR <= d;<br> <span class="hljs-keyword">end</span><br><br><span class="hljs-keyword">endmodule</span><br></code></pre></td></tr></table></figure><h2 id="rule-90">Rule 90</h2><p>Rule90是一种一维“元胞自动机”(cellularautomaton),在每个时间步骤,每个细胞的下一个状态是它两个当前邻居的异或(XOR)值。</p><p><em>In this circuit, create a 512-cell system (q[511:0]), and advanceby one time step each clock cycle. The load input indicates the state ofthe system should be loaded with data[511:0]. Assume the boundaries(q[-1] and q[512]) are both zero (off).</em></p><p>官方解答:</p><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><code class="hljs verilog"><span class="hljs-keyword">module</span> top_module(<br><span class="hljs-keyword">input</span> clk,<br><span class="hljs-keyword">input</span> load,<br><span class="hljs-keyword">input</span> [<span class="hljs-number">511</span>:<span class="hljs-number">0</span>] data,<br><span class="hljs-keyword">output</span> <span class="hljs-keyword">reg</span> [<span class="hljs-number">511</span>:<span class="hljs-number">0</span>] q);<br><br><span class="hljs-keyword">always</span> @(<span class="hljs-keyword">posedge</span> clk) <span class="hljs-keyword">begin</span><br><span class="hljs-keyword">if</span> (load)<br>q <= data;<span class="hljs-comment">// 给D触发器赋值</span><br><span class="hljs-keyword">else</span> <span class="hljs-keyword">begin</span><br><span class="hljs-comment">// 在每个时钟周期,D触发器储存的值变成它的左右邻居的异或值</span><br><span class="hljs-comment">// 因此对每一位进行的操作是相同的</span><br><span class="hljs-comment">// 这可以用数组很简单地表达出来</span><br><span class="hljs-comment">// 使用部分选择和连接符描述移位操作</span><br>q <= {<span class="hljs-number">1'b0</span>,q[<span class="hljs-number">511</span>:<span class="hljs-number">1</span>]} ^ {q[<span class="hljs-number">510</span>:<span class="hljs-number">0</span>], <span class="hljs-number">1'b0</span>} ;<br><span class="hljs-keyword">end</span><br><span class="hljs-keyword">end</span><br><span class="hljs-keyword">endmodule</span><br></code></pre></td></tr></table></figure><table><thead><tr><th>0</th><th>q[511]</th><th>q[510]</th><th>…</th><th>q[2]</th><th>q[1]</th></tr></thead><tbody><tr><td>q[510]</td><td>q[509]</td><td>q[508]</td><td>…</td><td>q[0]</td><td>0</td></tr></tbody></table><p>可以看出每来一个时钟沿,q的每一位都会变成相邻两位的异或。</p>]]></content>
<categories>
<category>EE</category>
</categories>
</entry>
<entry>
<title>レプリカント - ヨルシカ</title>
<link href="/2024/11/25/%E3%83%AC%E3%83%97%E3%83%AA%E3%82%AB%E3%83%B3%E3%83%88%20-%20%E3%83%A8%E3%83%AB%E3%82%B7%E3%82%AB/"/>
<url>/2024/11/25/%E3%83%AC%E3%83%97%E3%83%AA%E3%82%AB%E3%83%B3%E3%83%88%20-%20%E3%83%A8%E3%83%AB%E3%82%B7%E3%82%AB/</url>
<content type="html"><![CDATA[<style>p { font: 12pt Yu Mincho !important; }</style><p>レプリカント - ヨルシカ</p><p>詞:n-buna</p><p>曲:n-buna</p><p>編曲:n-buna</p><p>君は映画をずっと観ている<br />在空无一人的劇場之中</p><p>誰一人もない劇場で<br />你一个人独自看着電影</p><p>今思えばチープなセットで<br />那是部現在看来布景廉价</p><p>人のよく死ぬSF映画<br />常有人死去的科幻電影</p><p>いつか世界が真面になって<br />如果将来世界能變得積極美好</p><p>人の寿命さえ随分伸びて<br />人的寿命也无限延長</p><p>死ねない世界になればいいのにね<br />可以不用經歷死亡就好了</p><p>そしたら心以外は偽物だ<br />這樣一来 除了真心其余皆是虚假的</p><p>言葉以外は偽物だ<br />除了話語其余皆是虚假的</p><p>神様だって作品なんだから<br />因為神明也不過是个作品罷了</p><p>僕ら皆レプリカだ<br />我們全都是複製品</p><p>いつか季節が過ぎ去って<br />終有一天季節会流逝而過</p><p>冷たくなって年老いて<br />天气轉冷 年華逝去</p><p>その時に<br />届時</p><hr /><p>僕は映画をずっと観ている<br />我一直在看着一部電影</p><p>つまらないほどに薄い映画<br />一部庸俗到无聊的電影</p><p>席を立ってからやっと気付く<br />起身离席時我才終于發現</p><p>これは僕を描いたドラマだ<br />劇情所講述的正是我自己的故事啊</p><p>いつか僕らは大人になって<br />我們終将長大成人</p><p>手に入れるものも大きくなった<br />所獲之物也日益重大</p><p>次は愛でも買えればいいのにね<br />接下来要是連愛也能買到就好了呢</p><p>あんたの価値観なんて偽物だ<br />你的価値観全都是虚假的</p><p>思い出だって偽物だ<br />連回憶也全都是虚假的</p><p>心は腦の信号なんだから<br />因為心思不過是大腦傳輸的信号罷了</p><p>愛も皆レプリカだ<br />所有的愛也全都是複製品</p><p>いつか季節が過ぎ去って<br />終有一天季節会流逝而過</p><p>思い出ばかりが募って<br />只有回憶靜靜堆積</p><p>その時に<br />届時</p><hr /><p>満たされるならそれで良かった<br />只要能感到滿足就好</p><p>歌を歌うのに理由も無いは<br />歌唱并不需要理由</p><p>他人の為に生きられない<br />我不会為他人而活</p><p>さよなら以外全部塵<br />离别以外 全部如塵</p><p>人を呪う歌を描きたい<br />想譜寫出詛咒他人的歌</p><p>それで誰かを殺せればいいぜ<br />若是能借此取人性命就好了</p><p>夏の匂いに胸が詰まっていた<br />夏日的气息郁結滿懷</p><p>僕らの心以外は偽物だ<br />除了我們的心其余皆是虚假的</p><p>言葉以外は偽物だ<br />除了話語其余皆是虚假的</p><p>この世の全部は主観なんだから<br />因為世界全凭主觀而存在啊</p><p>君も皆レプリカだ<br />你也同樣是複製品</p><p>さよならだって投げ出して<br />豁出一切道别离开</p><p>このまま遠く逃げ出して<br />就這樣逃向遠方</p><p>言葉で全部表して<br />用語言来表述一切</p><p>心も愛も書き足して<br />添注上真心与愛</p><p>それでも空は酷く青いんだから<br />因為即便如此 天空仍是无可比擬的蔚藍</p><p>それはきっと魔法だから<br />那一定是魔法</p><p>いつか季節が過ぎ去って<br />終有一天季節会流逝而過</p><p>冷たくなって年老いて<br />天气轉冷 年華逝去</p><p>その時にやっとわかる<br />届時才終于明白</p><p>僕もその青さがわかる<br />我也懂得那份蔚藍</p>]]></content>
<categories>
<category>日语</category>
</categories>
</entry>
<entry>
<title>锁相环CD4046使用心得</title>
<link href="/2024/11/23/%E9%94%81%E7%9B%B8%E7%8E%AFCD4046%E7%9A%84%E4%BD%BF%E7%94%A8%E5%BF%83%E5%BE%97/"/>
<url>/2024/11/23/%E9%94%81%E7%9B%B8%E7%8E%AFCD4046%E7%9A%84%E4%BD%BF%E7%94%A8%E5%BF%83%E5%BE%97/</url>
<content type="html"><![CDATA[<figure><img src="https://i.imgur.com/ZpUo6qu.jpg" alt="成品" /><figcaption aria-hidden="true">成品</figcaption></figure><h1 id="前言">前言</h1><p>最近在忙着做校队招新的题目,要求是用锁相环CD4046B做一个倍频器,倍频系数为1,2,4,8,16,32,64。这个题最烦人的地方在于覆盖的频率范围很大,输入信号范围是1kHz~100kHz,这样来算输出最大要达到6.4MHz,然而以CD4046B来说这根本不可能,因为这款锁相环上集成的VCO的输出频率最大也就1MHz左右:</p><p><img src="https://i.imgur.com/51pBwa3.png" /></p><p>如你所见,输出最大频率的典型值为<strong>1.4MHz</strong>,这也基本符合我实测的结果。总之这题做满100kHz的64倍频基本是没戏了,但是听说有个组做到了7MHz?搞不懂是什么情况。(再吐槽一句,TI的CD4046B的数据手册真的太古老了啊,赶紧更新一下吧)</p><h1 id="引脚说明">引脚说明</h1><p><img src="https://i.imgur.com/Z91APjn.png" /></p><p>见上图。</p><ul><li>3;鉴相器输入</li><li>4:VCO输出</li><li>6、7之间的<spanclass="math inline">\(C_1\)</span>是VCO的起振电容</li><li>12脚<spanclass="math inline">\(R_2\)</span>决定了输出频率是否叠加一个偏置。如果不接,那么输出无偏置,频率就可以达到比较低的范围;如果接上电阻,频率范围整体会往上移动。</li><li>11脚<spanclass="math inline">\(R_1\)</span>也影响了输出频率·范围,R1越小输出频率越大,我这里取的是10k欧。</li><li>5脚禁止端,低电平使能器件。</li><li>13,鉴相器2的输出,它接入环路滤波器的输入端。</li><li>9,VCO的输入,这个输入电压应当尽可能平稳,这样VCO才会有稳定的输出。</li></ul><p>我这次在调试电路过程中动的最多的就是C1和引脚,4。通过调整C1的值来获得不同的频率输出范围;将3、4直接连接来测试锁相环的功能;确定锁相环能正常工作后再把3、4断开,接入分频器。</p><h1 id="频率范围">频率范围</h1><p>CD4046B的输出频率与供电电压有关,供电电压越大,能够输出的频率也越大,但是不能超过15V。根据我的测试,在5V供电,R2不接,R1=10k欧,C1=100pF的情况下,VCO的输出频率最多只有大约700kHZ。想达到1MHz以上的频率必须增大电压到10V,但是这又会产生一问题:锁相环是10V电平输入输出,而分频器是5V电平,两种电平并不互容,必须进行<strong>电平转换</strong>。这是我们组在昨天得到的结论,然后今天我自己花了半个上午的时间才总算是调好了。为了能够覆盖从1kHz~1MHz的频率范围,我切换了三个电容:</p><table><thead><tr><th>100pF</th><th>4.7nF</th><th>3.3nF</th></tr></thead><tbody><tr><td>41k~1.2M</td><td>2k~40k</td><td>1k~29k</td></tr></tbody></table><p>注意这里的频率应当是<strong>倍频后最终输出的频率</strong>。</p><h1 id="电平转换">电平转换</h1><p>这里的电平转换,具体来说:</p><ul><li>锁相环VCO输出的10V方波要被转换为5V方波</li><li>分频器输出的5V方波要被转换为10V方波</li></ul><p>LTspice仿真结果如下:</p><p><img src="https://i.imgur.com/3vQpjKX.png" /></p><p>高电平转低电平用的是左边那个电路,其实就是一个反相器。需要注意的是上拉电阻R1不要取得太大,不然上升沿过于缓慢,适应不了1MHz。而且这个电路实际测试的时候输出在下降沿的振铃非常大,大概是杂散电容和寄生电感的影响(毕竟是焊接到洞洞板上的)。</p><p>低电平转高电平用的是右边的电路,因为左边的电路这时候就不能用了。</p><h1 id="环路滤波器">环路滤波器</h1><p>这是锁相环相当重要的一环。环路滤波器的职责就是将鉴相器输出的高频分量尽可能地滤干净。网上关于环路滤波器的设计方法资料并不是很多,可以参见该博客:<ahref="https://www.cnblogs.com/qm1412/p/18222379">锁相环学习---CD4046</a></p><p>环路滤波器有专用的设计软件,但是非常古老,必须再下载一个XP系统的虚拟机,非常麻烦,所以我就直接使用博客里设计好的电路了:</p><p><img src="https://i.imgur.com/yCQpeqy.jpg" /></p><p>LTspice仿真得到其幅频响应和相频响应如下:</p><p><img src="https://i.imgur.com/LWBPZIo.png" /></p><p>实测这个滤波器可以用于1kHz~1MHz的范围。</p><h1 id="对vco输出进行整形">对VCO输出进行整形</h1><p>这一步其实并不是必要的,但是我还是使用告诉比较器把输出波形整成好看一点的方波,这主要是因为我所用的10V转5V的电平转换电路上升沿非常慢,以至于方波几乎已经变成锯齿波了,非常难受。</p><p><img src="https://i.imgur.com/NrkVsnV.png" /></p><p>注意我最终电路中VIN是经过电容之后才送入比较器,这样隔离直流分量,比较器容易产生正确的结果。另外R1可以稍微取得大一些,比如500欧,对噪声的抑制能力也会强一些。这个比较器的输出为3.3V、0V,可以直接送入单片机的外部时钟输入引脚用来测量频率。</p><h1 id="总结">总结</h1><p>最后实现的效果如图(输入信号与输出信号稳定同频显示不漂移)只拍了N=1的情况,N=64也能非常稳</p><p><img src="https://i.imgur.com/PvEWWA3.jpg" /></p><p>这次与锁相环有关的电路基本都是我负责的,焊接在一大块洞洞板上,焊锡丝的助焊剂快熏死我了。。。不过好在最后的成品表现非常不错,最大能锁定到1.2MHz的频率,已经接近CD4046B的极限了。另外队友也买了一大堆CD4046B,过几天我想用这些多余的芯片测试一下锁相环的FM解调功能。</p>]]></content>
<categories>
<category>电子设计</category>
</categories>
</entry>
<entry>
<title>杂谈</title>
<link href="/2024/11/14/%E6%9D%82%E8%B0%88/"/>
<url>/2024/11/14/%E6%9D%82%E8%B0%88/</url>
<content type="html"><![CDATA[<p>11.16 期中考试物理+概率论</p><p>11.18 数物测试</p><p>11.24 nt校队招新测评。用CD4026实现1kHz~6.4MHz锁相?</p><p>12.01 考日语N2</p><p>12.09 一科期末考试</p><p>之后还有数电课设</p><p>以及:天天对着短视频奸笑笑出声还丝毫不知道自己已经恶心到别人的人怎么这么多啊tmd</p><hr /><p>11.16晚11点补充<br />脑瘫MT又在寝室开麦打游戏🤮早点下地狱去🤮自己被吵到的时候就重拳出击把其他所有人都臭骂一顿。自己恶心到别人的时候又一副理所应当的样子🤮利己主义原来就是这样的吗</p><p>这种明明给别人带来困扰却丝毫不知情的人死掉好了</p>]]></content>
<categories>
<category>杂谈</category>
</categories>
</entry>
<entry>
<title>日語中的「くの字点」</title>
<link href="/2024/10/30/%E6%97%A5%E8%AA%9E%E4%B8%AD%E7%9A%84%E3%80%8C%E3%81%8F%E3%81%AE%E5%AD%97%E7%82%B9%E3%80%8D/"/>
<url>/2024/10/30/%E6%97%A5%E8%AA%9E%E4%B8%AD%E7%9A%84%E3%80%8C%E3%81%8F%E3%81%AE%E5%AD%97%E7%82%B9%E3%80%8D/</url>
<content type="html"><![CDATA[<style>p { font: 12pt Yu Mincho !important; }</style><p>最近在青空文庫上閲讀日語圖書的時候發現了這樣一段文字:</p><blockquote><p>表記について<br />このファイルは W3C 勧告 XHTML1.1 にそった形式で作成されています。<br />「くの字点」は「/\」で表しました。</p></blockquote><p>即:此文件是根据W3C推荐的XHTML1.1格式制作的。'くの字点'用'/\'表示。</p><p>「くの字点」是什麽?</p><p>我找到了這樣一篇解釋文章:<ahref="https://www.canon-its.co.jp/files/topics/2560_ext_06_0.pdf">https://www.canon-its.co.jp/files/topics/2560_ext_06_0.pdf</a></p><p>所謂'くの字点',就是在重复两个字以上的假名,或漢字与假名時使用的標記符號。如果在重複時漢字的讀音變爲濁音,那麽くの字点也要相應地加上濁音符號。一個くの字点要占用兩個字節的位置。以下圖爲例:</p><p><img src="https://i.imgur.com/7NyGuQV.png" /></p><p>まあまあー>まあ/\ 大致,還算過得去<br />しかじかー>しか/"\ 云云,等等<br />見る見るー>見る/\ 眼看著,轉眼間<br />離れ離れー>離れ/\ 失散</p><p>由於日語文章經常按照縱向排列,因此青空文庫就使用“/\”來代替這個符號了。</p>]]></content>
<categories>
<category>日语</category>
</categories>
</entry>
<entry>
<title>Look Back</title>
<link href="/2024/10/26/ganxiang/"/>
<url>/2024/10/26/ganxiang/</url>
<content type="html"><![CDATA[<p>今天去电影院看了《蓦然回首》。我看的那一场几乎坐满了人,但是全程几乎没有人说话和刷手机,可能是因为大部分人都是学生吧。</p><p>这个电影比我想象中的更加惊艳,真的有触动到我…上次产生这样的感觉还是《天气之子》的时候吧。藤野第一次和京本见面之后,得到了京本的认可,从京本的家中出来,在雨中的泥泞道路中起舞。看到这个场景的时候,不知为何我忍不住哭了出来…包括看到后来藤野和京本一起画漫画、互相陪伴的剧情时,我也一直有一种想哭的感觉,拼命咬住牙才没哭出来…这是我第一次因一个作品而受到如此大的触动。</p><p>为什么会产生这种感觉呢。我明明从来没有画过漫画。大概我也想像藤野一样,在自己热爱的领域得到别人的认可,然后和同样热爱这一事物的人一起努力吧。藤野和京本之间的友谊真的无比耀眼…</p>]]></content>
</entry>
<entry>
<title>Orangestar - Alice in 冷凍庫 (feat. IA)歌詞</title>
<link href="/2024/10/26/Alice%20in%20%E5%86%B7%E5%87%8D%E5%BA%AB/"/>
<url>/2024/10/26/Alice%20in%20%E5%86%B7%E5%87%8D%E5%BA%AB/</url>
<content type="html"><![CDATA[<style>p { font: 12pt Yu Mincho !important; }</style><p>作詞:Orangestar<br />作曲:Orangestar</p><p>凍えナンセンス劇場。</p><hr /><p>それは時の果てる</p><p>劇場世界のプロローグ</p><p>A lie? 君は誰?</p><p>どことなく物憂げに</p><p>裸足のままで</p><p>張りつく夜に遊ぶように</p><p>彷徨う僕は何故か</p><p>君を探しているのだ</p><p>だぁ だぁ</p><p>あの日のいつかまでの</p><p>星座のソラは闇のように</p><p>閉ざされた小景に</p><p>意味もなく吐き捨てる</p><p>あぁ僕は何故</p><p>僕をどこまで連れてくの</p><p>開けたその先に</p><p>いつか見た扉</p><p>合図で るらったったった</p><p>繰り返して 回ったったった</p><p>君が居そうな氷漬けの夢</p><p>迷走 昏いステップ</p><p>るらったったった</p><p>寂しくて 笑ったったった</p><p>踏み出すままに汚せ</p><p>今は凍えぬように</p><p>言葉よりも意味を成せ</p><p>冷めやらな世界 病みの曜日</p><p>消え行くあてもなく</p><p>独り舞台に泣き崩れる</p><p>あぁもう嫌だ</p><p>全て0からやり直して</p><p>回り切ったその先に</p><p>いつか見た扉</p><p>荒んだ夜 眠れないレイニー</p><p>自称冷静な世界とside alley-C00</p><p>見据えたナンセンス</p><p>必然の解離僕らまた出逢えるように</p><p>あぁ</p><p>朝靄を空に裂いた</p><p>君のその柔い手が</p><p>白銀製の張を</p><p>たやすく浚ってゆく</p><p>知らぬまま大人になるほど</p><p>懐かしさは残るけど</p><p>それも全部かき混ぜて</p><p>廻り出す今日は綺麗だ</p><p>時間が音をたてながら</p><p>崩れてゆく最後を</p><p>君は何故か悲しそうに</p><p>笑いながら踊るWonderland</p><p>またあの日と同じようなさ</p><p>星空に吞まれては</p><p>紡ぎ出した言葉通りの</p><p>想い 熱を放て</p>]]></content>
<categories>
<category>日语</category>
</categories>
</entry>
<entry>
<title>LTspice中SW元件的使用</title>
<link href="/2024/10/14/LTspice%E4%B8%ADSW%E5%85%83%E4%BB%B6%E7%9A%84%E4%BD%BF%E7%94%A8/"/>
<url>/2024/10/14/LTspice%E4%B8%ADSW%E5%85%83%E4%BB%B6%E7%9A%84%E4%BD%BF%E7%94%A8/</url>
<content type="html"><![CDATA[<p>LTspice不像Multisim那样有现成的手动开关。开关功能可以用<strong>S.Voltage Controlled Switch</strong>(压控开关)实现。</p><p><img src="https://i.imgur.com/1EAGN5i.png" /></p><ol type="1"><li>按P键打开元件库,搜索"SW",放置在图纸中</li><li>插入指令定义SW元件的行为,例如:<code>.model MYSW SW(Ron=1 Roff=1Meg Vt=.5 Vh=-.4)</code>,其中<code>Ron</code>是导通电阻(<strong>导通电阻不能为0!</strong>),<code>Roff</code>为断开电阻,Vt和Vh决定了开关的阈值电压,在本例中为0.9V和0.1V</li><li>将开关模型的名称改成MYSW</li><li>放置一个电压源用来控制开关,这里用的是Pulse,开关在闭合1s后保持关断状态。</li></ol><p>SW相关的所有参数如下表格:</p><table><thead><tr><th style="text-align: center;">Name</th><th style="text-align: center;">Description</th><th style="text-align: center;">Units</th><th style="text-align: center;">default</th></tr></thead><tbody><tr><td style="text-align: center;">Vt</td><td style="text-align: center;">阈值电压</td><td style="text-align: center;">V</td><td style="text-align: center;">0.0</td></tr><tr><td style="text-align: center;">Vh</td><td style="text-align: center;">滞后电压</td><td style="text-align: center;">V</td><td style="text-align: center;">0.0</td></tr><tr><td style="text-align: center;">Ron</td><td style="text-align: center;">导通电阻</td><td style="text-align: center;">Ω</td><td style="text-align: center;">1.0</td></tr><tr><td style="text-align: center;">Roff</td><td style="text-align: center;">关断电阻</td><td style="text-align: center;">Ω</td><td style="text-align: center;">1/Gmin</td></tr><tr><td style="text-align: center;">Lser</td><td style="text-align: center;">串联电感</td><td style="text-align: center;">H</td><td style="text-align: center;">0.0</td></tr><tr><td style="text-align: center;">Vser</td><td style="text-align: center;">串联电压</td><td style="text-align: center;">V</td><td style="text-align: center;">0.0</td></tr><tr><td style="text-align: center;">Ilimit</td><td style="text-align: center;">限制电流</td><td style="text-align: center;">A</td><td style="text-align: center;">Infin.</td></tr></tbody></table><p><strong>该开关根据滞回电压 Vh的值,具有三种不同的电压控制模式:</strong></p><ul><li>如果 Vh为零,开关将始终完全导通或关断,具体取决于输入电压是否超过阈值电压。</li><li>如果 Vh为正值,开关将表现出滞回现象,就像通过施密特触发器控制一样,触发点为 Vt- Vh 和 Vt + Vh。需要注意的是,Vh是触发点之间电压的一半,这与常见的实验室术语有所不同。</li><li>如果 Vh为负值,开关将在导通和关断阻抗之间平滑过渡。过渡发生在控制电压 Vt - Vh和 Vt + Vh 之间,且平滑过渡遵循开关导通行为的对数的低阶多项式拟合。</li></ul><p>平时设Vh为负值就好。</p><p>参考链接:<br /><ahref="https://www.analog.com/cn/resources/technical-articles/ltspiceiv-voltage-controlled-switches.html#:~:text=To%20insert%20and%20configure%20a%20switch%20in%20LTspice%E2%80%A6,this%20example%3A.model%20MYSW%20SW%20%28Ron%3D1%20Roff%3D1Meg%20Vt%3D.5%20Vh%3D-.4%29">LTspice:Voltage Controlled Switches</a></p>]]></content>
<categories>
<category>EE</category>
</categories>
</entry>
<entry>
<title>黃昏乙女×失憶幽靈 插曲 - 安魂曲(Requiem) (中日歌詞)</title>
<link href="/2024/10/12/%E9%BB%83%E6%98%8F%E5%B0%91%E5%A5%B3/"/>
<url>/2024/10/12/%E9%BB%83%E6%98%8F%E5%B0%91%E5%A5%B3/</url>
<content type="html"><![CDATA[<style>p { font: 12pt Yu Mincho !important; }</style><figure><imgsrc="https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExa3pqb3d4MHhkcjMyMTB5aDZscXY3ZDYzZmN6eHN1N2RqNmV1emZwYSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/3EpJECI9nYJ2T0UUP5/giphy.gif"alt="大愛夕子學姐" /><figcaption aria-hidden="true">大愛夕子學姐</figcaption></figure><p>最近補完了一直想看的老番《黃昏乙女×失憶幽靈》,對插曲レクイエム印象深刻…因此将這首歌的歌詞整理一下。</p><p>中文歌詞来源:Eve Y.Translate</p><p>歌 / 作詞 / 作曲 - 柊奈緒</p><hr /><p>あぁ あなたは 啊啊 你啊 </p><p>あぁ いつか<br />啊啊 要到何時</p><p>私に告げるのでしょう<br />才打算告訴我呢</p><p>優しい声できっと<br />一定會用很溫柔的聲音訴説吧</p><p>魂は揺れる きらきら こぼれる涙の星<br />靈魂搖曳 閃閃發光 宛如流下眼淚的星星</p><p>やがて来る 悲しいだけの 未来よ永久に眠れ<br />在即將到來 只有悲傷存在的未來 永久地沉睡</p><p>あぁ 私は<br />啊啊 我啊</p><p>あぁ いつか<br />啊啊 要到何時</p><p>その手を離すのでしょう<br />才會放開那雙手呢</p><p>優しい笑みできっと<br />你一定是帶著溫柔的微笑吧</p><p>魂は揺れる きらきら こぼれる涙の星<br />靈魂搖曳 閃閃發光 宛如流下眼淚的星星</p><p>あなたの近くにいられる この瞬間よ続け<br />讓陪伴在你身邊的 這一個瞬間持續下去吧</p><p>夕暮れの空も<br />無論是黃昏的天空</p><p>藍色の夜も<br />還是深藍的夜晚</p><p>胸に刻まれる<br />全都刻在心底啊</p><p>あなたとの日々よ<br />那些與你在一起的日子</p>]]></content>
<categories>
<category>日语</category>
</categories>
</entry>
<entry>
<title>为Fluid主题首页的副标题添加淡入效果</title>
<link href="/2024/10/04/%E4%B8%BAFluid%E4%B8%BB%E9%A2%98%E9%A6%96%E9%A1%B5%E7%9A%84%E5%89%AF%E6%A0%87%E9%A2%98%E6%B7%BB%E5%8A%A0%E6%B7%A1%E5%85%A5%E6%95%88%E6%9E%9C/"/>
<url>/2024/10/04/%E4%B8%BAFluid%E4%B8%BB%E9%A2%98%E9%A6%96%E9%A1%B5%E7%9A%84%E5%89%AF%E6%A0%87%E9%A2%98%E6%B7%BB%E5%8A%A0%E6%B7%A1%E5%85%A5%E6%95%88%E6%9E%9C/</url>
<content type="html"><![CDATA[<h1 id="前言">前言</h1><p>最近又折腾了一下博客的美化。默认Fluid主题的首页副标题用的是打字机特效,不过我不太喜欢,于是琢磨了一下淡入效果。我并没有学过前端,一下代码主要靠chatgpt和其他网友得到。</p><h1 id="过程">过程</h1><p>使用F12打开开发者模式,定位副标题:<br /><img src="https://i.imgur.com/mgjRfJ2.jpg" alt="Imgur" />目标对应的元素为<code>.h2 #subtitle</code>,在外部CSS文件中加入下列代码:</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><code class="hljs css"> <span class="hljs-keyword">@font-face</span> {<br> <span class="hljs-attribute">font-family</span>: <span class="hljs-string">"Si Yuan"</span>;<br> <span class="hljs-attribute">src</span>: <span class="hljs-built_in">url</span>(<span class="hljs-string">"../fonts/Si Yuan.otf"</span>) <span class="hljs-built_in">format</span>(<span class="hljs-string">"truetype"</span>);<br> <span class="hljs-attribute">font-weight</span>: <span class="hljs-number">400</span>;<br> }<br><br><span class="hljs-selector-class">.h2</span> <span class="hljs-selector-id">#subtitle</span> {<br> <span class="hljs-attribute">font-family</span>: <span class="hljs-string">'Si Yuan'</span>, sans-serif; <span class="hljs-comment">/* 替换为你想要的字体 */</span><br> <span class="hljs-attribute">font-size</span>: <span class="hljs-number">32px</span>; <span class="hljs-comment">/* 调整字体大小 */</span><br> <span class="hljs-attribute">color</span>: <span class="hljs-number">#ffffff</span>; <span class="hljs-comment">/* 设置字体颜色 */</span><br> <span class="hljs-attribute">opacity</span>: <span class="hljs-number">0</span>; <span class="hljs-comment">/* 初始透明度为0,隐藏 */</span><br> <span class="hljs-attribute">transition</span>: opacity <span class="hljs-number">1.5s</span> linear; <span class="hljs-comment">/* 设置过渡效果 */</span><br> }<br><br><span class="hljs-selector-class">.h2</span> <span class="hljs-selector-id">#subtitle</span><span class="hljs-selector-class">.visible</span> {<br> <span class="hljs-attribute">opacity</span>: <span class="hljs-number">1</span>; <span class="hljs-comment">/* 完全可见 */</span><br> }<br></code></pre></td></tr></table></figure><p>由于这里我使用的是思源宋体,并非系统自带的字体,因此额外使用<code>@font-face</code>引入外来字体。</p><p>另外,注意文章页的标题和首页的标题用的是同一个元素,二者会同时发生变更。</p><p>再向外部js文件中加入下列代码: <figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs js"><span class="hljs-variable language_">document</span>.<span class="hljs-title function_">addEventListener</span>(<span class="hljs-string">'DOMContentLoaded'</span>, <span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) {<br> <span class="hljs-keyword">const</span> subtitle = <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">getElementById</span>(<span class="hljs-string">'subtitle'</span>);<br> subtitle.<span class="hljs-property">classList</span>.<span class="hljs-title function_">add</span>(<span class="hljs-string">'visible'</span>); <span class="hljs-comment">// 页面加载后添加 visible 类</span><br>});<br></code></pre></td></tr></table></figure> 完成。</p>]]></content>
<categories>
<category>code</category>
</categories>
</entry>
<entry>
<title>雪酷字幕组的特效注释字幕分析</title>
<link href="/2024/10/02/%E9%9B%AA%E9%85%B7%E5%AD%97%E5%B9%95%E7%BB%84%E7%9A%84%E7%89%B9%E6%95%88%E6%B3%A8%E9%87%8A%E5%AD%97%E5%B9%95%E5%88%86%E6%9E%90/"/>
<url>/2024/10/02/%E9%9B%AA%E9%85%B7%E5%AD%97%E5%B9%95%E7%BB%84%E7%9A%84%E7%89%B9%E6%95%88%E6%B3%A8%E9%87%8A%E5%AD%97%E5%B9%95%E5%88%86%E6%9E%90/</url>
<content type="html"><![CDATA[<h1 id="前言">前言</h1><p>雪酷字幕组在2011至2012年期间与曙光字幕组合作完成了《命运石之门》的翻译工作,这也是我最早看的一个版本,翻译非常贴切自然,并且动漫中出现的流行词汇也都附上了详尽的注释。可惜在2014年之后雪酷字幕组就突然失踪了……这里我想分析一下他们在为《命运石之门》做字幕注释时用到的特效方案,从中窥视那个时代的字幕组对待字幕工作是何等敬业。</p><span id="more"></span><p>以繁体版第10集3:46处的注释为例,ass文件代码如下:</p><pre><code class="hljs">3:46.19~3:51.20 {\move(15,20,15,10,0,200)\pos(15,10)\fad(300, 300)}Blood Tune3:45.90~3:51.41 {\fscx0\pos(15,20)\t(0,200,1,\fscx100)\t(5300,0,1,\fscx0)}————3:46.19~3:51.20 {\move(15,20,15,50,0,200)\pos(15,50)\fad(300, 300)}(架空)TV動畫『BLOOD TUNE THE ANIMATION』。\N原作是漫畫,隨著多元媒體化的風潮終於在去年動畫化。\N作品被製作成為全26話的作品,受到了動漫愛好者們的廣泛關注,\N特別是女主角『星來Orujeru』的PVC模型擁有相當高的人氣。</code></pre><p>上面一共用了三段字幕来完成对【BloodTune】的注释。而且,三段字幕分别使用了三种不同大小的字体(在1080p清晰度下):</p><ol type="1"><li>neta1-微软雅黑,用于注释对象的名称,字号26,边框2,阴影0</li><li>neta2-微软雅黑,用于创造分界线,字号40,边框2,阴影0</li><li>neta3-微软雅黑,用于注释的具体内容,字号28,边框2,阴影0</li></ol><p>实现的效果如图 <imgsrc="https://media.giphy.com/media/EuIDh9scyssnZXBT39/giphy.gif" /></p><p>下面对这三段代码进行逐行分析。</p><h1 id="平滑的文本展示效果">平滑的文本展示效果</h1><p><code>\move</code>用于设置文本的<strong>移动轨迹</strong>,其基本语法是<code>\move(x1,y1,x2,y2,start_time,end_time)</code>,其中<code>(x1,y1)</code>是起始位置,<code>(x2,y2)</code>是结束位置,<code>start_time</code>和<code>end_time</code>定义动画的开始和结束时间(单位:毫秒)。</p><p><code>\pos</code>用于设置文本的<strong>绝对位置</strong>,其语法是(x,y),其中 x 和 y是屏幕坐标。这个命令将文本固定在指定的位置,不随时间变化。</p><p><code>\fad</code>用于设置文本的<strong>淡入淡出</strong>效果,其基本语法是<code>\fad(fade_in_time, fade_out_time)</code>,其中<code>fade_in_time</code>是淡入持续的时间(毫秒),<code>fade_out_time</code>是淡出持续的时间(毫秒)。</p><p><code>{\move(15,20,15,10,0,200)\pos(15,10)\fad(300, 300)}Blood Tune</code>是一串复合代码,综合以上三点,其作用为:- 文本从屏幕坐标<code>(15, 20)</code>移动到<code>(15, 10)</code>,在 0毫秒时开始,200 毫秒时结束。 -文本运动到<code>(15,10)</code>后会被固定到这个位置。 -在文本开始移动的同时,会附加一个300毫秒的淡入效果,在文本消失时则有300毫秒的淡出效果。</p><h1 id="动态的分界线">动态的分界线</h1><p><code>\fscx</code>用于设置文本的<strong>水平缩放</strong>(<strong>f</strong>ront<strong>sc</strong>ale<strong>x</strong>),其基本语法是<code>\fscx<value></code>,其中<code><value></code>是缩放的百分比值。例如:</p><ul><li><code>\fscx100</code>表示正常大小</li><li><code>\fscx50</code>表示正常大小的一半</li></ul><p><code>\t</code>用于创建<strong>动画效果</strong>(transformation),从一个样式动画渐变到另外一个。Aegisub手册给出的语法如下:</p><pre><code class="hljs">\t(<style modifiers>)\t(<accel>,<style modifiers>)\t(<t1>,<t2>,<style modifiers>)\t(<t1>,<t2>,<accel>,<style modifiers>)</code></pre><p>本例使用的是第四个。其中<code><style modifiers></code>参数是特效标签,<code>accel</code>参数可以让动画效果不再是匀速的,而是满足一条指数曲线。该参数为1时,运动速度是恒定的。参数在0和1之间时,运动速度逐渐变慢。参数大于1时,运动速度越来越快。</p><p>整个代码的运行逻辑可以用下图概括:<br /><img src="https://i.imgur.com/r6Rsdn7.png" /></p>]]></content>
<categories>
<category>字幕</category>
</categories>
</entry>
<entry>
<title>简易温度传感器设计</title>
<link href="/2024/09/19/%E6%B8%A9%E5%BA%A6%E4%BC%A0%E6%84%9F%E5%99%A8/"/>
<url>/2024/09/19/%E6%B8%A9%E5%BA%A6%E4%BC%A0%E6%84%9F%E5%99%A8/</url>
<content type="html"><![CDATA[<p>最近在上一门叫电子设计基础的课。课上要设计一个简易温度传感器,然而老师给出的方案真心不怎么样,所以自己重新设计了一个</p><p><imgsrc="https://github.com/banyee19/blog_images/blob/main/%E6%B8%A9%E5%BA%A6%E4%BC%A0%E6%84%9F%E5%99%A8%E5%AE%9E%E7%89%A9.jpg?raw=true" /></p><p>用二极管做温度传感器,STM32F103C8T6采集电压数据换算成温度,最后用数码管显示出来。供电采用3.7V锂电池,还配备有Type-C插口用来充电。</p><p>原理图如下:</p><p><imgsrc="https://github.com/banyee19/blog_images/blob/main/%E6%B8%A9%E5%BA%A6%E8%AE%A1%E5%8E%9F%E7%90%86%E5%9B%BE.jpg?raw=true" /></p><p>这里最复杂的应该是供电部分。供电部分的方案用的是了TT在射频功率计的设计里使用的方案,锂电池输入经过TPS63070升压到6.3V,再经SPX3819和RT9013分别降压到5V和3.3V。锂电池充电管理使用IP2312。数码管驱动用的是74HC595,用单片机的三个IO口就能同时控制数码管的8个脚,余下两个LED的阴极则与三极管开关相连,没有直接接单片机IO口主要是考虑到单片机吸收电流的能力有限,因此间接使用IO口控制三极管的通断。在同一时刻,数码管只能显示一个数字,为了达到同时显示的效果需要利用视觉暂留,我设定两个数字的闪烁频率为100Hz。</p><p>二极管的导通压降与温度的关系大约是-2mV/摄氏度,此处运放反向放大30倍,这样能覆盖大约55摄氏度的范围。单片机同时读取运放的输出电压和电池电量,电量过低时指示灯亮起。</p>]]></content>
<categories>
<category>电子设计</category>
</categories>
</entry>
<entry>
<title>Hexo Fluid主题渲染LaTeX数学公式的问题总结</title>
<link href="/2024/09/15/Hexo%20Fluid%E4%B8%BB%E9%A2%98%E6%B8%B2%E6%9F%93LaTeX%E6%95%B0%E5%AD%A6%E5%85%AC%E5%BC%8F%E7%9A%84%E9%97%AE%E9%A2%98%E6%80%BB%E7%BB%93/"/>
<url>/2024/09/15/Hexo%20Fluid%E4%B8%BB%E9%A2%98%E6%B8%B2%E6%9F%93LaTeX%E6%95%B0%E5%AD%A6%E5%85%AC%E5%BC%8F%E7%9A%84%E9%97%AE%E9%A2%98%E6%80%BB%E7%BB%93/</url>
<content type="html"><![CDATA[<p>在Fluid的<ahref="https://hexo.fluid-dev.com/docs/guide/#latex-%E6%95%B0%E5%AD%A6%E5%85%AC%E5%BC%8F">官方指南文档</a>中已经做了详尽的说明,一步一步跟着做就没问题。值得注意的是,在主题配置的代码</p><pre><code class="hljs">post:math:enable: truespecific: falseengine: mathjax</code></pre><p>中,要想使用数学公式,<code>enable</code>一项必须是<code>true</code>才行,否则会出现渲染错误,比如像下面这样:</p><p><imgsrc="https://github.com/banyee19/blog_images/blob/main/%E4%B8%8D%E5%90%AF%E7%94%A8.jpg?raw=true" /></p><p>同样的公式渲染了一次之后又重复了一次。</p><p>另外,Hexo中无法使用换行符<code>\\</code>,原因是<code>\</code>在Markdown属于特殊字符,用于字符转义,所以两个<code>\</code>经过Markdown引擎处理为html后,只剩下一个,等到LaTex渲染引擎处理时,实际上只看到一个<code>\</code>,渲染引擎把它当作LaTeX 中的空格。</p><p>在不改动现有代码的情况下,我的解决方法是直接改变公式的写法。比如下边这个公式</p><pre><code class="hljs">$$a_11=b_11 \\a_22=b_22+c_22$$</code></pre><p>改为</p><pre><code class="hljs">$$\begin{aligned}a_{11}& =b_{11}\\a_{22}& =b_{22}+c_{22}\end{aligned}$$</code></pre><p>渲染效果如下: <span class="math display">\[\begin{aligned}a_{11}& =b_{11}\\a_{22}& =b_{22}+c_{22}\end{aligned}\]</span> 更复杂的公式同理: <span class="math display">\[\begin{aligned} F_x'&=\gamma\{q[\frac{-i\gamma}{c}(u_t'+i\betau_x')E_x+u_y'B_z-u_z'B_y] +i\beta\frac{iq}{c}[\gamma(u_x'-i\betau_t')E_x+u_y'E_y+u_z'E_z] \}\\ &=\frac{-iq\gamma^2}{c}(1-\beta^2)E_xu_t'-q\gamma(B_y+\frac{\beta}{c}E_z)u_z'+q\gamma(B_z-\frac{\beta}{c}E_y)u_y'\end{aligned}\]</span></p>]]></content>
<categories>
<category>数学</category>
</categories>
</entry>
<entry>
<title>成为烤肉man的这半个月</title>
<link href="/2024/09/15/%E7%BF%BB%E8%AF%91%E6%84%9F%E6%83%B3/"/>
<url>/2024/09/15/%E7%BF%BB%E8%AF%91%E6%84%9F%E6%83%B3/</url>
<content type="html"><![CDATA[<p>今年暑假的倒数第二天,我在手机端的b站首页刷到了这个视频:<imgsrc="https://github.com/banyee19/blog_images/blob/main/%E7%83%A4%E8%82%89man.jpg?raw=true" /><br />看到这个视频以后我就有一种跃跃欲试的感觉。因为我本身是有一定的日语基础的,因为兴趣自学了两年日语。如果能用自己学到的知识帮助更多的人,那就再好不过了。于是,在第二天,也就是暑假的最后一天,我安装了Aegisub,开始学习字幕制作,并在当天晚上找到了一个合适的视频——一个时长三分钟的《败犬女主》短评,做翻译做到晚上十二点多。然后才匆匆收拾行李准备第二天回学校。</p><p>说实话,这时候我还不确定能不能做下去。因为译制就意味着自己要对这个视频的字幕的正确性负责,翻译不好的话反而可能会被骂。我一直是尽量避免去承担责任的那种人,所以在犹豫。不过,不管怎么说,到学校之后我还是把那个短评给翻完了。这之后还要向原作者请求授权,我翻了一下作者的首页,发现要用邮箱联系他…然后借助chatgpt把邮件写完,正要发送时,我停了下来——为了一个仅仅三分钟的视频,特地发一大段的邮件来授权,况且视频内容本身也不算非常新颖,这也太…所以我到最后也没有把翻译好的视频发出来,就把这当成一次字幕入门练习了。</p><p>这之后我在油管上找到了一个还不错的夏日隧道的影评,时长10分钟左右,观点也很新颖,就决定是这个了。视频的翻译进行到一半的时候,我在X上私信了原作者,请求转载授权。不过原作者那几天刚好没看X,过了一天之后还没回复,说真的这时我已经开始后悔了。一个踏踏实实做视频的人突然被一个外国人私信说希望翻译授权,这多少有点怪异吧,毕竟原视频的播放量本来也不算高。但是,就在第二天晚上,对方回复了:</p><blockquote><p>----様<br />ご連絡ありがとうございます。<br />動画の翻訳転載ですがBiliBiliだけに転載するのであれば問題ありません。<br />アップロードしたあとにURLをDMで教えて下さい。<br />よろしくお願いいたします。</p></blockquote><p>看到这个回复的时候我真的是非常惊喜的…怀着感激的心情,我下定决心一定要把视频尽可能完美地翻译出来。发出申请是在9月2日,正式完工是在9月6日,中间的3、4号我一直在反复地进行翻译、校对,而5号晚上重制了原视频的封面。之所以要重制,主要是因为b站的网页端和手机端首页显示的封面尺寸是不同的(逆天),从油管上直接下载的尺寸为1280x720,而b站手机端封面显示的是1280x960,如果不加修改直接上传,势必导致封面被二次裁剪,使得关键信息也被裁掉。所以,我重新从原电影中截取了视频封面所使用的那一帧,然后搜索确认封面所用字体为チェックポイントファント,在5号晚上用PS重制了封面。啊,这样就能给原作者一个交代了吧,我想。6号早上正式发布视频,随即私信联系了原作者,把视频链接发了过去。</p><p>作者很快就给了答复,在感谢我的译制的同时告诉我以后如果要搬运她的视频的话不必事先请求,只要投稿完毕之后用私信把链接发过去就好。虽然这个视频的播放量很惨淡,但不管怎么说,我的翻译之路正式开始了。</p><p>截至这篇博客发布为止,我已经翻译好了一个影评、一个采访视频和一篇专访。我倾向于去翻译这些影评和专访,因为这类视频/文章一般比较长,内容很充实,并且是说话人观点的直接输出。而且这种体裁本身也比较严肃,所以翻译的时候有更高的要求,<strong>必须使得每一句话的翻译都尽可能接近原意,否则就是对说话人观点的曲解</strong>。为了做到这一点,我在每一段话上都投入了相当多的精力,校对了一遍又一遍。另一方面,字幕字体的选择也是一个重要的问题。对于一般的游戏杂谈等,字幕的意义仅仅在于清晰地传达说话人所说的内容,因此阅读效率更高的无衬线字体是第一选择,比如思源粗体。但是对于访谈来说,我个人觉得字幕本身也是视频画面的重要部分,因此在保证字幕清晰的前提下我倾向于选择有衬线字体。比如最近翻译的专访中我就使用了思源宋体中文+游明朝日文的字幕搭配,视觉效果非常不错。</p><p>这样的翻译流程虽然非常花费时间,但是当看到自己翻译出来的成品时,还是非常有成就感的。当然最开心的莫过于那些来自观众的支持和感谢的评论。能帮到大家真是太好了…这就是学习语言的意义所在啊(泪目)通过这种方式,我也许能离早期的互联网精神更近那么一点点吧?</p><p>因为我自身也是个学生,只能在闲的时候翻译一点东西,效率和那些字幕组相比肯定差远了,但是没关系。这个过程能让我感到充实,能帮助到大家,这就够了。以后还要多多烤肉!(笑)</p>]]></content>
<categories>
<category>日语</category>
</categories>
</entry>
<entry>
<title>序章-新博客的诞生</title>
<link href="/2024/09/13/hello-world/"/>
<url>/2024/09/13/hello-world/</url>
<content type="html"><![CDATA[<p>新博客建成祝贺! <span id="more"></span>经过两天的配置,,终于成功用Github把博客搭建出来了!</p><p>其实之前我一直是在博客园上面写博客的(虽然也才刚写了几个月),但是最近博客园的运营情况令人堪忧,可能再过几个月就要被收购了,嘛这样的话到时候博客园大概率要植入广告了,所以索性自己创建一个博客好了。另一方面,我写博客的目的是把自己的想法记录下来,或者分享自己的知识,所以博客园那种类似于论坛式的模式其实并不是很适合我。只要把博文发出来,我就达到目的了,就算没有人看也没关系。</p><p>不出意外的话这个博客应该会长期更新下去。毕竟是自己费了好大的功夫才建出来的嘛(笑)我在生活中并不喜欢和别人交流,周围能和我一起交流喜欢的事物的人几乎没有,但是我还是希望把自己思考的东西分享出来。那干脆就借助博客好了。以后这个博客上会发布各种我感兴趣的内容。</p><p>总之,我宣布,Banyee's Blog从今天开始正式成立了!</p>]]></content>
<tags>
<tag>初次见面</tag>
</tags>
</entry>
</search>