WaveDrom 是一个非常棒的绘制时序图工具

今天,我在考虑要怎么绘制一个稍微能看点的时序图,就是元器件数据手册里常见的那种。我最开始的想到是微软巨制 Visio,毕竟它实在很贵,应该有为它的用户准备好这些。但也许是我没有交钱买 Pro 的原因,我发现 Visio 里甚至并没有有点类似的图形。尽管我们可以用直线来搭,但……这确实太反人类了,于是我开始另谋他法。于是找到了 WaveDrom

为什么 Markdown 很操蛋

自从 2004 年某个大佬发明了 Markdown,并且给出了其最初的 Perl 实现之后,这种轻量的标记语言就成为了互联网的新宠。在过去的十多年中愈演愈烈,直至今日有了大大小小几十种实现,大有成为互联网第一写作语言的趋势。现在你要弄个网站,不支持 Markdown 都不好意思说你有文本输入框。然而它仍然是最操蛋的语言之一。

DDS in FPGA

DDS(Direct Digital Synthesizer,直接频率合成器),或者叫 NCO(Numerically Controlled Oscillator,数控振荡器)是数字信号处理中的一个非常重要的组件。一般来说,DDS 利用查找表法产生一个数字的正弦曲线。其它的算法包括 CORDIC、泰勒展开等。典型的应用包括 DUC/DDC。

System Generator 上手

System Generator 是 Xilinx Vivado 套件里的组件之一。它主要的作用是利用 Matlab 中的 Simulink 组件来完成 FPGA 设计,即将 Simulink 仿真模型 .slx 转换为 HDL 文件。具体来说,System Generator 为 Simulink 提供了一套 Block 库,这套 Block 库既可以完成功能仿真,也有对应的 HDL 描述/网表。这和 Matlab 自己的 HDL Coder 类似,但由于是 Xilinx 为自己的 FPGA 写的 Block 库,能够比 HDL Coder 接触到更底层的设计,以便进行优化。更多关于两个工具的对比,可以参考 Matlab 的这个文档

当然也是由于工作的原因,我开始接触这个工具,让我们先简单的看看它是否好用。

FPGA 中的数值修约(Rounding)

对于一个数,如果我们无需那么高的位宽(精度),那么就可以对其修约。修约代表着用一个精度更低(但是更易用)的数来替代它。也许世界上最著名的数值修约的例子就是 $\pi\approx3.14$ 了。