Josh's Blog

一个电子工程师的修养

indefinite article - a

Pronunciation

  • BrE: /ə/, strong form /eɪ/
  • NAmE: /ə/, strong form /eɪ/

also an

  • BrE: /ən/, strong form /æn/
  • NAmE: /ən/, strong form /æn/

The form a is used before consonant sounds and the form an before vowel sounds. When saying abbreviations like ‘FM’ or ‘UN’, use a or an according to how the first letter is said. For example, F is a consonant, but begins with the sound /e/ and so you say: an FM radio. U is a vowel but begins with /j/ and so you say: a UN declaration.

Explanation

  1. A1 used before countable or singular nouns referring to people or things that have not already been mentioned(用于可数名词或单数名词前,表示未曾提到的)一(人、事、物)

阅读全文 »

noun

Pronunciation

  • BrE: /pɪtʃ/
  • NAmE: /pɪtʃ/

Explanation

for sport 体育运动

  1. B2 (British English)

    (also field North American English, British English)

    [countable] an area of ground specially prepared and marked for playing a sports game

阅读全文 »

和 Verilog 相比,SystemVerilog 提供了很多改进了的数据结构。虽然其中的部分结构最初是为设计人员创建的,但对测试人员也同样有用。本文将介绍这些对验证很有用的数据结构。

SystemVerilog 引进了一些新的数据类型,它们具有如下优点:

  1. 双状态数据类型 (Two-state):性能更好,内存消耗更低。
  2. 队列、动态数组和关联数组 (Queues, dynamic and associative arrays):内存消耗减少,自带搜索和分类功能。
  3. 类和结构 (Classes and structures:):支持抽象数据结构。
  4. 联合和合并结构 (Unions and packed structures):允许对同一数据有多种视图 (view)。
  5. 字符串 (Strings):支持内建的字符序列。
  6. 枚举类型 (Enumerated types):方便代码编写、增加可读性。
阅读全文 »

  在开始学习有关 SystemVerilog 语言的细节之前,我们需要了解如何制订计划来验证手中的设计,以及这个验证计划对测试平台(testbench)结构的影响。所有测试平台都有用于产生激励、检验响应的结构。本文对测试平台的构建和设计给出一些引导性的建议和编码风格方面的参考,以满足不同的需要。

  对于验证工程师而言,最重要的原则是“有漏洞是好事(Bugs are good)”,要勇于寻找程序中的漏洞,每次找到漏洞都应该及时告警并记录下来。任何一个项目中都不可能没有漏洞,所以在流片之前每发现一个漏洞都意味着用户手中的产品少一个漏洞。我们应该尽可能细致深入地去检验设计,找出所有可能存在的漏洞,尽管有时候这些漏洞可能很容易修复。

  本文需要 Verilog 语言基础,面向对 SystemVerilog HVL(Hard­ware Verification Language,硬件验证语言)感兴趣的读者。与 HDL(Hardware Description Language,硬件描述语言)相比,HVL 具有一些特别的性质:

  1. 受约束的随机激励生成Constrained-random stimulus generation)。

  2. 功能覆盖率Functional coverage)。

  3. 更高层次的结构,尤其是面向对象的编程(Higher-level structures, especially object-oriented programming)。

  4. 多线程及线程间的通信(Multithreading and interprocess communication)。

  5. 支持 HDL 数据类型Support for HDL types)。

  6. 集成了事件仿真器,便于对设计施加控制(Tight integration with event-simulator for control of the design)。

  此外还有其他很多有用的特性,但上述特性使得 HVL 可以创建高度抽象的测试平台,其抽象层次比使用 HDL 或计算机编程语言(如 C 语言)所能达到的还要高。

阅读全文 »

1. 直线与线段

$ $  设 \(x_1 \ne x_2\)\(\mathbf{R}^n\) 空间中的两个点,则具有下列形式的点

\[ y = \theta x_1 + (1-\theta)x_2,\theta \in \mathbf{R} \]

组成一条穿过 \(x_1\)\(x_2\)直线line)。参数 \(\theta = 0\)\(\theta = 1\) 分别对应 \(y=x_2\)\(y = x_1\)。参数 \(\theta\) 的值在 0 和 1 之间变动,构成了 \(x_1\)\(x_2\) 之间的(闭)线段((closed) line segment)。

  另一种 \(y\) 的表示形式

\[ y = x_2 + \theta (x_1 - x_2) \]

可以解释为:\(y\)基点base point\(x_2\)(对应 \(\theta = 0\))和方向direction\(x_1 - x_2\)(由 \(x_2\) 指向 \(x_1\))乘以参数 \(\theta\) 的和。因此,\(\theta\) 给出了 \(y\) 在由 \(x_2\) 通向 \(x_1\) 的路上的位置。当 \(\theta\)\(0\) 增加到 \(1\),点 \(y\) 相应地由 \(x_2\) 移动到 \(x_1\)。如果 \(\theta > 1\),点 \(y\) 在超越了 \(x_1\) 的直线上。图 1 给出了直观的解释。

图 1. 通过 x_1 和 x_2 的直线可以参数化描述为 \theta x_1 + (1-\theta)x_2,其中 \theta 在 \mathbf{R} 上变化。x_1 和 x_2 之间的线段由深色所示,对应处于 0 和 1 之间的 \theta。
阅读全文 »

本文要点

  • 什么是抽取?什么是内插?两者的作用分别是什么?
  • 抽取、内插前后信号在时域和频域如何变化?
  • 抗混叠滤波器和除镜像滤波器的原理和作用是什么?
  • 如何实现分数倍抽样率转换?
  • 如何利用 MATLAB 实现抽样率转换?

  多抽样率信号处理的研究对象是不同抽样率1下的信号,其中抽样率转换 (Sampling Rate Conversion, SRC) 是核心问题之一。早期的抽样率转换通常采用模拟方法,即将给定的抽样信号通过数模转换器 (Digital-to-Analog Converter, DAC) 转换成模拟信号 (连续时间信号),再对该模拟信号进行新的抽样,经模数转换器 (Analog-to-Digital Converter, DAC) 得到所需的抽样信号。而随着数字电路的普及和数字信号处理技术的发展,采用数字方法,即直接在离散时间域上完成抽样率转换已成为当前的主要方式。相比于模拟方法,数字方法不需要进行D/A和A/D转换,降低了系统的复杂度,同时避免了由量化、编码等过程产生的失真问题。

  本文首先回顾采样的概念;随后介绍抽样率转换的两个基本运算单元,即抽取和内插;进而讨论如何利用抽取和内插实现分数倍抽样率转换;最后介绍抽样率转换在 MATLAB 上的实现。

阅读全文 »

本文主要记录一些使用 LaTex 过程中碰到的问题与解决办法。

阅读全文 »