从Fortran到arXivorg,这些计算机编码和平台让生物学、气候科学和物理学等学科的发展达到了真正“日新月异”的速度。
2019年,事件视界望远镜团队让世界首次看到了黑洞的样子。不过,研究人员公布的这张发光环形物体的图像并不是传统的,而是经过计算获得的。利用位于美国、墨西哥、智利、西班牙和南极地区的射电望远镜所得到的数据,研究人员进行了数学转换,最终合成了这张标志性的。研究团队还发布了实现这一壮举所用的编程代码,并撰文记录这一发现,其他研究者也可以在此基础上进一步加以分析。
这种模式正变得越来越普遍。从天文学到动物学,在现代每一项重大科学发现的背后,都有计算机的参与。美国斯坦福大学的计算生物学家迈克尔·莱维特因“为复杂化学系统创造了多尺度模型”与另两位研究者分享了2013年诺贝尔化学奖,他指出,今天的笔记本电脑内存和时钟速度是他在1967年开始获奖工作时实验室制造的计算机的1万倍。“我们今天确实拥有相当可观的计算能力,”他说,“问题在于,我们仍然需要思考。”
如果没有能够解决研究问题的软件,以及知道如何编写并使用软件的研究人员,一台计算机无论再强大,也是毫无用处的。如今的科学研究从根本上已经与计算机软件联系在一起,后者已经渗透到研究工作的各个方面。近日,《自然》(Nature)杂志将目光投向了幕后,着眼于过去几十年来改变科学研究的关键计算机代码,并列出了其中10个关键的计算机项目。
这台CDC 3600型计算机于1963年交付给位于科罗拉多州博尔德的国家大气研究中心,研究者在Fortran编译器的帮助对其进行了编程
语言先驱:Fortran编译器(1957年)
最初的现代计算机并不容易 *** 作。当时的编程实际上是手工将电线连接成一排排电路来实现的。后来出现了机器语言和汇编语言,允许用户用代码为计算机编程,但这两种语言都需要对计算机的架构有深入的了解,使得许多科学家难以掌握。
20世纪50年代,随着符号语言的发展,特别是由约翰·巴克斯及其团队在加州圣何塞的IBM开发的“公式翻译”语言Fortran,这种情况发生了变化。利用Fortran,用户可以用人类可读的指令来编程,例如x = 3 + 5。然后由编译器将这些指令转换成快速、高效的机器代码。
不过,这一过程仍然很不容易。早期的程序员使用打孔卡来输入代码,而复杂的模拟可能需要数万张打孔卡。尽管如此,新泽西州普林斯顿大学的气候学家真锅淑郎(Syukuro Manabe)还是指出,Fortran让非计算机科学家也能编程,“这是我们第一次能够自己给计算机编程”。他和同事们利用这种语言开发的气候模型是最早取得成功的模型之一。
Fortran发展至今已经到了第八个十年,它仍然广泛应用于气候建模、流体动力学、计算化学等学科,这些学科都涉及到复杂线性代数并需要强大的计算机来快速处理数字。Fortran生成的代码速度很快,而且仍然有很多程序员知道如何编写。古早的Fortran代码库仍然活跃在世界各地的实验室和超级计算机上。“以前的程序员知道他们在做什么,”美国海军研究院的应用数学家和气候模型师弗兰克·吉拉尔多说,“他们非常注重内存,因为他们拥有的内存非常少。”
信号处理器:快速傅立叶变换(1965)
当射电天文学家扫描天空时,他们捕捉到的是随时间变化的复杂信号杂音。为了理解这些无线电波的本质,他们需要看到这些信号作为频率的函数时是什么样的。一种名为“傅里叶变换”的数学过程可以帮到研究人员,但它的效率很低,对于一个大小为N的数据集需要N^2次计算。
1965年,美国数学家詹姆斯·库利和约翰·杜基想出了一种加速该过程的方法。快速傅里叶变换(FFT)通过递归(一种通过重复将问题分解为同类的子问题而解决问题的编程方法)将计算傅里叶变换的问题简化为N log2(N)步。随着N的增加,速度也会提高。对于1000个点,速度提升大约是100倍;100万个点则是5万倍。
这个“发现”实际上是一个再发现,因为德国数学家高斯在1805年就对此进行了研究,但他从未发表过。而詹姆斯·库利和约翰·杜基做到了,他们开启了傅里叶变换在数字信号处理、图像分析、结构生物学等领域的应用,成为应用数学和工程领域的重大事件之一。FFT在代码中的应用已有很多次,近年一个流行的方案是FFTW,被认为是世界上最快的FFT。
保罗·亚当斯是加州劳伦斯伯克利国家实验室分子生物物理学和综合生物成像部门的主任,他回忆称,当他在1995年改进细菌蛋白质凝胶的结构时,即使使用FFT和超级计算机,也需要“很多个小时,甚至数天”的计算。“如果在没有FFT的情况下尝试做这些,我不知道在现实中应该如何做到,”他说,“那可能要花很长时间。”
分子编目:生物数据库(1965年)
数据库是当今科学研究中不可或缺的组成部分,以至于人们很容易忘记它们也是由软件驱动的。过去的几十年中,数据库资源的规模急剧膨胀,影响了许多领域,但或许没有哪个领域的变化会比生物学领域更引人注目。
蛋白质数据库Protein Data Bank拥有超过17万个分子结构的档案,包括这种细菌的“表达子”(expressome),其功能是结合RNA和蛋白质合成的过程。
今天,科学家所用的庞大基因组和蛋白质数据库源于美国物理化学家玛格丽特·戴霍夫的工作,她也是生物信息学领域的先驱。20世纪60年代初,当生物学家们致力于梳理蛋白质的氨基酸序列时,戴霍夫开始整理这些信息,以寻找不同物种之间进化关系的线索。她与三位合著者于1965年发表了《蛋白质序列和结构图谱》,描述了当时已知的65种蛋白质的序列、结构和相似性。 历史 学家布鲁诺·斯特拉瑟在2010年写道,这是第一个“与特定研究问题无关”的数据集,它将数据编码在打孔卡中,这使得扩展数据库和搜索成为可能。
其他“计算机化”的生物数据库紧随其后。蛋白质数据库Protein Data Bank于1971年投入使用,如今详细记录了超过17万个大分子结构。加州大学圣地亚哥分校的进化生物学家拉塞尔·杜利特尔在1981年创建了另一个名为Newat的蛋白质数据库。1982年,美国国立卫生研究院(NIH)与多个机构合作,成立了GenBank数据库,这是一个开放获取的DNA序列数据库。
这些数据库资源在1983年7月证明了其存在价值。当时,由伦敦帝国癌症研究基金会蛋白质生物化学家迈克尔·沃特菲尔德领导的团队,与杜利特尔的团队各自独立报道了一个特殊的人类生长因子序列与一种导致猴子出现癌症的病毒蛋白质之间的相似性。观察结果显示了一种病毒诱发肿瘤机制——通过模仿一种生长因子,病毒会诱导细胞不受控制地生长。美国国家生物技术信息中心(NCBI)前主任詹姆斯·奥斯特尔说:“这一结果让一些对计算机和统计学不感兴趣的生物学家头脑里灵光一闪:我们可以通过比较序列来了解有关癌症的一些情况。”
奥斯特尔还表示,这一发现标志着“客观生物学的到来”。除了设计实验来验证特定的假设,研究人员还可以挖掘公共数据集,寻找那些实际收集数据的人可能从未想到的联系。当不同的数据集连接在一起时,这种力量就会急剧增长。例如,NCBI的程序员在1991年通过Entrez实现了这一点;Entrez是一个可以让研究人员在DNA、蛋白质和文献之间自由检索和比对的工具。
预测领先者:大气环流模式(1969年)
在第二次世界大战结束时,计算机先驱约翰·冯·诺伊曼开始将几年前用于计算d道轨迹和武器设计的计算机转向天气预测问题。真锅淑郎解释道,在那之前,“天气预报只是经验性的”,即利用经验和直觉来预测接下来会发生什么。相比之下,冯·诺伊曼的团队“试图基于物理定律进行数值天气预测”。
新泽西州普林斯顿的美国国家海洋和大气管理局(NOAA)地球物理流体动力学实验室的建模系统部门负责人Venkatramani Balaji表示,几十年来,人们已经熟知这些方程式。但早期的气象学家无法实际解决这些问题。要做到这一点,需要输入当前的条件,计算它们在短时间内会如何变化,并不断重复。这个过程非常耗时,以至于在天气状况实际出现之前还无法完成数学运算。1922年,数学家刘易斯·弗莱·理查森花了几个月时间计算德国慕尼黑的6小时预报。根据一段 历史 记载,他的结果是“极不准确的”,包括“在任何已知的陆地条件下都不可能发生的”预测。计算机使这个问题变得很容易解决。
20世纪40年代末,冯·诺伊曼在普林斯顿高等研究院建立了天气预报团队。1955年,第二个团队——地球物理流体动力学实验室——开始进行他所谓的“无限预测”,也就是气候建模。
真锅淑郎于1958年加入气候建模团队,开始研究大气模型;他的同事柯克·布莱恩将这一模型应用在海洋研究中。1969年,他们成功将二者结合起来,创造了《自然》杂志在2006年所说的科学计算“里程碑”。
今天的模型可以将地球表面划分为一个个25公里 25公里的正方形,并将大气层划分为数十层。相比之下,真锅淑郎和布莱恩的海洋-大气联合模型划分的面积为500平方公里,将大气分为9个层次,只覆盖了地球的六分之一。尽管如此,Venkatramani Balaji表示,“这个模型做得很好”,使研究团队第一次能够通过计算机预测二氧化碳含量上升的影响。
数字运算机:BLAS(1979年)
科学计算通常涉及到使用向量和矩阵进行相对简单的数学运算,但这样的向量和矩阵实在太多了。但在20世纪70年代,还没有一套普遍认可的计算工具来执行这些运算。因此,从事科学工作的程序员会将时间花在设计高效的代码来进行基本的数学运算,而不是专注于科学问题。
加州劳伦斯利弗莫尔国家实验室的Cray-1超级计算机。在BLAS编程工具于1979年问世之前,并没有线性代数标准可供研究人员在Cray-1超级计算机等机器上工作
编程世界需要一个标准。1979年,这样的标准出现了:基本线性代数程序集(Basic Linear Algebra Subprograms,简称BLAS)。这是一个应用程序接口(API)标准,用以规范发布基础线性代数 *** 作的数值库,如矢量或矩阵乘法。该标准一直发展到1990年,为向量数学和后来矩阵数学定义了数十个基本例程。
美国田纳西大学计算机科学家、BLAS开发团队成员杰克·唐加拉表示,事实上,BLAS把矩阵和向量数学简化成了和加法和减法一样基本的计算单元。
美国德克萨斯大学奥斯汀分校的计算机科学家Robert van de Geijn指出,BLAS“可能是为科学计算定义的最重要的接口”。除了为常用函数提供标准化的名称之外,研究人员还可以确保基于BLAS的代码在任何计算机上以相同方式工作。该标准还使计算机制造商能够优化BLAS的安装启用,以实现在其硬件上的快速 *** 作。
40多年来,BLAS代表了科学计算堆栈的核心,也就是使科学软件运转的代码。美国乔治·华盛顿大学的机械和航空航天工程师洛雷娜·巴尔巴称其为“五层代码中的机械”。而杰克·唐加拉说:“它为我们的计算提供了基础结构。”
显微镜必备:NIH Image(1987年)
20世纪80年代初,程序员韦恩·拉斯班德在马里兰州贝塞斯达的美国国立卫生研究院的脑成像实验室工作。该实验室拥有一台扫描仪,可以对X光片进行数字化处理,但无法在电脑上显示或分析。为此,拉斯班德写了一个程序。
这个程序是专门为一台价值15万美元的PDP-11小型计算机设计的,这是一台安装在架子上的计算机,显然不适合个人使用。然后,在1987年,苹果公司发布了Macintosh II,这是一个更友好、更实惠的选择。拉斯班德说:“在我看来,这显然是一种更好的实验室图像分析系统。”他将软件转移到新的平台上,并重新命名,建立了一个图像分析生态系统。
NIH Image及其后续版本使研究人员能在任何计算机上查看和量化几乎任何图像。该软件系列包括ImageJ,一个拉斯班德为Windows和Linux用户编写的基于Java的版本;以及Fiji,这是ImageJ的分发版,由德国德累斯顿的马克斯普朗克分子细胞生物学和遗传学研究所的Pavel Tomancak团队开发,其中包括关键的插件。“ImageJ无疑是我们所拥有的最基础的工具,”布洛德研究所(由麻省理工学院和哈佛大学联合创立)成像平台的计算生物学家贝丝·契米妮说,“我从来没有和一个使用过显微镜,但没有使用过ImageJ或Fiji的生物学家说过话。”
拉斯班德表示,部分原因可能是这些工具是免费的。但威斯康星大学麦迪逊分校的生物医学工程师Kevin Eliceiri指出,另一个原因是用户可以很容易地根据自己的需求定制工具。自拉斯班德退休后,Kevin Eliceiri的团队一直领导着ImageJ的开发。ImageJ提供了一个看似简单、极简主义的用户界面,自20世纪90年代以来基本上没有改变。然而,由于其内置的宏记录器(允许用户通过记录鼠标点击和菜单选择的序列来保存工作流)、广泛的文件格式兼容性和灵活的插件架构,该工具具有无限的可扩展性。该团队的编程主管柯蒂斯·鲁登表示,有“数以百计的人”为ImageJ贡献了插件。这些新添加的功能极大扩展了研究人员的工具集,例如在视频中跟踪对象或自动识别细胞的功能。
Kevin Eliceiri说:“这个程序的目的不是做到一切或终结一切,而是服务于用户的目标。不像Photoshop和其他程序,ImageJ可以成为你想要的任何东西。”
序列搜索器:BLAST (1990年)
可能没有什么能比把软件名称变成动词更能说明文化的相关性了。提到搜索,你会想到谷歌;而提到遗传学,研究者会立刻想到BLAST。
通过诸如替代、删除、缺失和重排等方式,生物将进化中的改变蚀刻在分子序列中。寻找序列之间的相似性——特别是蛋白质之间的相似性——可以让研究人员发现进化关系,并深入了解基因功能。在迅速膨胀的分子信息数据库中,想要快速而准确地做到这一点并不容易。
玛格丽特·戴霍夫在1978年提供了关键的进展。她设计了一种“点接受突变”矩阵,使研究人员不仅可以根据两种蛋白质序列的相似程度,还可以根据进化距离来为评估它们的亲缘关系。
1985年,弗吉尼亚大学的威廉·皮尔森和NCBI的大卫·利普曼引入了FASTP,这是一种结合了戴霍夫矩阵和快速搜索能力的算法。
数年后,利普曼与NCBI的沃伦·吉什和斯蒂芬·阿特舒尔,宾夕法尼亚州立大学的韦伯·米勒,以及亚利桑那大学的吉恩·迈尔斯一起开发了一种更强大的改进技术:BLAST(Basic Local Alignment Search Tool)。BLAST发布于1990年,将处理快速增长的数据库所需的搜索速度,与提取进化上更为遥远的匹配结果的能力结合起来。与此同时,该工具还可以计算出这些匹配发生的概率。
阿特舒尔表示,计算结果出来得非常快,“你可以输入搜索内容,喝一口咖啡,搜索就完成了。”但更重要的是,BLAST很容易使用。在一个通过邮寄更新数据库的时代,沃伦·吉什建立了一个电子邮件系统,后来又建立了一个基于网络的架构,允许用户在NCBI计算机上远程运行搜索,从而确保搜索结果始终是最新的。
哈佛大学的计算生物学家肖恩·艾迪表示,BLAST系统为当时处于萌芽阶段的基因组生物学领域提供了一个变革性的工具,即一种根据相关基因找出未知基因可能功能的方法。对于各地的测序实验室,它还提供了一个新颖的动词。“它是众多由名词变成动词的例子之一,”艾迪说,“你会说,你正准备BLAST一下你的序列。”
预印本平台:arXivorg (1991年)
20世纪80年代末,高能物理学家经常将他们已投稿的论文手稿副本邮寄给同行,征求他们的意见——但只发给少数人。物理学家保罗·金斯帕格在2017年写道:“处于食物链较低位置的人依赖于一线研究者的成果,而非精英机构中有抱负的研究人员则往往身处特权圈以外。”
1991年,当时在新墨西哥州洛斯阿拉莫斯国家实验室工作的金斯帕格编写了一个电子邮件自动应答程序,希望建立一个公平的竞争环境。订阅者每天都会收到预印本列表,每一篇都与文章标识符相关联。只需通过一封电子邮件,世界各地的用户就可以从实验室的计算机系统中提交或检索论文,并获得新论文的列表,或按作者或标题进行搜索。
金斯帕格的计划是将论文保留三个月,并将内容限制在高能物理学界。但一位同事说服他无限期地保留这些文章。他说:“就在那一刻,它从布告栏变成了档案馆。”于是,论文开始从比各个领域如潮水般涌来。1993年,金斯伯格将这个系统迁移到互联网上,并在1998年将其命名为arXivorg,沿用至今。
arXiv成立已近30年,拥有约180万份预印本,全部免费提供,而且每月有超过15万份论文提交,下载量达3000万次。十年前,《自然-光子学》(Nature Photonics)的编辑在评论arXiv创立20周年时写道:“不难看出为什么arXiv的服务会如此受欢迎,这个系统让研究人员能快速而方便地插上旗帜,显示他们所做的工作,同时避免投稿传统同行评议期刊时的麻烦和时间成本。”
arXiv网站的成功也促进了生物学、医学、 社会 学和其他学科同类预印本网站的繁荣。在如今已出版的数万份关于新冠病毒的预印本中就可以看到这种影响。“很高兴看到30年前在粒子物理学界之外被认为是异端的方法,现在被普遍认为是平淡无奇和自然而然的,”金斯伯格说,“从这个意义上说,它就像一个成功的研究项目。”
数据浏览器:IPython Notebook (2011年)
2001年,费尔南多·佩雷斯还是一位希望“寻找拖延症”的研究生,当时他决定采用Python的一个核心组件。
Python是一种解释型语言,这意味着程序是逐行执行的。程序员可以使用一种称为“读取-评估-打印循环”(read–evaluate–print loop,简称REPL)的计算调用和响应工具,在其中输入代码,然后由解释器执行代码。REPL允许快速 探索 和迭代,但佩雷斯指出,Python的REPL并不是为科学目的而构建的。例如,它不允许用户方便地预加载代码模块,也不允许打开数据可视化。因此,佩雷斯自己编写了另一个版本。
结果就是IPython的诞生,这是一个“交互式”Python解释器,由佩雷斯在2001年12月推出,共有259行代码。十年后,佩雷斯与物理学家布莱恩·格兰杰和数学家埃文·帕特森合作,将该工具迁移到web浏览器上,推出了IPython Notebook,开启了一场数据科学革命。
与其他计算型Notebook一样,IPython Notebook将代码、结果、图形和文本合并在一个文档中。但与其他类似项目不同的是,IPython Notebook是开源的,邀请了大量开发者社区的参与其中。而且它支持Python,一种很受科学家欢迎的语言。2014年,IPython演变为Jupyter,支持大约100种语言,允许用户在远程超级计算机上 探索 数据,就像在自己的笔记本电脑上一样轻松。
《自然》杂志在2018年写道:“对于数据科学家,Jupyter实际上已经成为一个标准。”当时,在GitHub代码共享平台上有250万个Jupyter Notebook;如今,这一数字已经发展到1000万个,在2016年引力波的发现,以及2019年的黑洞成像工作中,它们都发挥了重要的作用。佩雷斯说:“我们对这些项目做出了很小的贡献,这是非常值得的。”
快速学习器:AlexNet(2012年)
人工智能有两种类型。一种是使用编码规则,另一种则通过模拟大脑的神经结构来让计算机“学习”。加拿大多伦多大学的计算机科学家杰弗里•辛顿表示,几十年来,人工智能研究人员一直认为后者是“一派胡言”。但在2012年,他的研究生亚力克斯·克里泽夫斯基和伊尔亚·苏茨克维证明了事实并非如此。
在一年一度的ImageNet比赛中,研究人员被要求在一个包含100万张日常物体图像的数据库中训练人工智能,然后在一个单独图像集上测试生成的算法。辛顿表示,当时最好的算法错误分类了大约四分之一的图像。克里泽夫斯基和苏茨克维的AlexNet是一种基于神经网络的“深度学习”算法,它将错误率降低到了16%。辛顿说:“我们基本上把错误率减半了,或者说几乎减半了。”
辛顿还指出,该团队在2012年的成功反映了足够大的训练数据集与出色的编程,以及新出现的图形处理单元的强大能力的结合。图形处理单元是最初设计用来加速计算机视频性能的处理器。“突然之间,我们可以将(算法)运行速度提高30倍,”他说,“或者说,学习多达30倍的数据。”
真正的算法突破实际上发生在三年前,当时辛顿的实验室创建了一个神经网络,可以比经过几十年改进的传统人工智能更准确地识别语音。“只是稍微好一点,”辛顿说,“但这已经预示了某些东西。”
这些成功预示着深度学习在实验室研究、临床医学和其他领域的崛起。通过人工智能的深度学习,手机能够理解语音查询,图像分析工具能够很容易地在显微照片中识别出细胞;这就是为什么AlexNet会成为众多从根本上改变科学,也改变世界的工具之一。(任天)
DMT和卷积编码调制在DSL中的应用
钟晓建 潘贵敦 马亲民 梁小宇
�
(华中师范大学物理系武汉430079)
摘要讨论了离散多音频调制和网格编码相结合的调制方式在DSL中的应用,离散多音频调制DMT〔1〕是一种多载波调制技术,将传输数据根据各子带信噪比按位分配到子带上,使每个子带码元宽度大于多径延迟。如果把调制和纠错编码结合起来,则可使误码率大大降低,是一种带宽利用率较高的调制方式。
�关键词:ADSL离散多音频网格编码〔2〕欧氏距离〔3〕离散傅立叶变换/逆变换
1引 言
� 随着Internet技术的不断发展,人们对传输数据的速度、质量要求越来越高,在当前为了有效地利用现有的资源——电话线,提出了DSL〔1〕(数字用户线)的概念,使用话音频率以上的频带(4 k~11 MHz)来调制高速数字信号,按照Δf=43125 kHz分割成一个个的子带,由于Δf刚好是音频的宽度,故命名为离散多音频,DMT调制是基于离散傅立叶变换对并行数据进行调制解调的。随着超大规模集成电路(VL SI)和数字信号处理(DSP)技术的不断进步,用FFT实现实时DMT调制已付诸使用。但以往的调制解调系统,纠错编码与调制是各自独立设计并实现的,译码和解调也是如此,这样解调器在接收信号是对信号作独立硬判决,硬判决结果再送给译码器译码,这种硬判决会导致接收端信息的不可恢复的丢失,解决这个问题的方法是在接收端采用软判决译码。DSL技术中就是将DMT和网格编码综合设计,在白噪声环境下比传统技术的误码性能有了很大的提高。这种最佳的编码调制系统是按照编码序列的欧氏距离为设计的量度,这就要求将编码器和调制器当作一个统一的整体进行综合设计,使得编码器和调制器级联后产生的编码信号序列具有最大的欧氏自由距离。从信号空间的角度看,这种最佳编码调制的设计实际上是一种对信号空间的最佳分割。经过实验分析,DMT和卷积编码结合后的编码增益比传统编码的编码增益增加了8 dB。�
2xDSL接入设备体系结构
� 在ADSL的应用当中,其硬件体系结构大致是由线路接口、接收滤波、线路驱动、模拟前端以及DMT收发器这几个模块组成。其中DMT收发器在发端对数据进行复用、循环冗余校验、前向纠错、子带排序、卷积编码、星座映射以及IFFT变换,送到模拟前端变换成模拟信号发送出去,而在收端是将模拟信号经过FFT变换、解映射、维特比译码等一系列反变换,提交给上层。根据T1413〔4〕标准,采用韦氏16状态4维网格码作为内码,采用Reed�Solomon编码作为前向纠错码,另外由于网格编码对成块的噪声抵抗能力较差,因此在进行网格编码之前将数据进行交织使噪声分散。ADSL的DMT收发器框图大致如图1所示。
3DMT与卷积编码调制原理
� 在ADSL的发送端,将数据分配到不同的子带上,这种分配可以根据各个子带的信噪比来确定分配的bit数。而ADSL系统为各个子带建立并维持了一个比特数和增益大小的表,是在ATU-R一端计算出来并返回给局端。为保证后一子带所带的位数不小于前一子带的位数,先对子带进行排序,即子带按信噪比大小从小到大进行排序。为了使编码获得的码字有较大的欧氏自由距离,采用了四维TCM网格编码,这样位抽取是基于一对子带的,因为一个子带在空间上是二维的,一对相互正交的子带在空间上则是四维的 ,相应的在解码的时候也是一对一对的作维特比译码。欧氏自由距离是在四维空间上计算出来的,这样四维的陪集可以由两个二维的陪集的联合构成,即这样四维TCM网格码的欧氏自由距离可以由两个二维星座图的距离的平方和算出, 在译码系统中,最可能发生错误的情况是在具有最小的平方欧氏距离的两个序列�{an}和{bn}�之间,(前者是发送序列,后者是译码序列),这一最小平方欧氏距离常又称为平方自由距离,记做:
��编码的目的是为了使这个平方自由距离最大。
�网格编码调制的通过一种特殊的信号映射可变成卷积码的形式。这种映射的原理是将调制信号集分
割成子集,是的子集内的信号间具有更大的空间距离,用编码效率为k/(k+1)的卷积码选择子集,用其余位选择子集中的点。在DSL数字用户环路中用16状态的4维网格编码的编码器结构如图2所示。
其中的卷积编码部分如图3所示。
图2中每两个子带抽取的位数z′=x+y-1(x为第一个子带所带的位数,y为第二个子带所带的位数)。{uz′-1,uz′-2,…u1}为原码,输出的是经过卷积以及异或以后的编码,为两个二进制码字,即{vz-y�,vz′-y-1,…v1,v0}和{wy-1,wy-2,…w1,w0},这两个二进制码字将映射成两个星座点。编码算法使星座点的两个最低位决定星座点的二维陪集{v1,v0}和{w1,w0}实际上是这个上标的二进制表示。对于一帧中最后两个码字,为了使卷积编码状态{s3,s2,s1,s0}回到零状态。让编码前的码字的{u1,u2}={0,0},则最后两对子带抽取的位数z′=x+y-3。
�
这样编码得出的信号有两个基本特征:
� (1)星座图中所用的信号点数大于未编码同种调制所需的点数(扩大了一倍),这些附加的信号点为纠错编码提供冗余度。
�(2)采用卷积码在相继的信号点之间引入某种依赖性,因而只有某些信号点序列才是允许出现的,这些允许的信号序列可以模型化为网络结构。可用网格图来表述。
� 在接收端对接收序列进行维特比译码〔4〕,即最大似然译码,可以用网格图求最相似的路径来描述这种算法,它依赖于有限状态的马尔可夫系统的描述,包括状态变迁以及状态变迁的输出码字。在四维TCM�编码的基础上,解码时要对一对一对的数据进行解码,计算码距时也是以四维空间的欧氏距离为标准,取最相似的一条路径。对于长度为L+m的网格路径(L为信息序列的长度,m表示后缀为m个0向量)接收序列为所有的网格路径在零时刻发散于同一个初始状态、收敛于第j时刻(j=L+ m)的同一个最后一状态。在理想状况下,对于一个存储量无限度的通道,可以将所有可能的路径都记录下来,然后选择其中对数似然函数值最大的作为译码结果。
对数似然函数是将接收序列判定为某条路径的序列的条件概率的对数
��这里的对数似然函数取最大值,实际上是接收的码序列与估计路径的码之间的距离取最小值,是基于欧氏空间距离来计算的。在这里维特比译码算法的核心是回退的观点,采用动态规划法存储数据,如果对每条可能的路径进行存储的话,随着译码深度的增加,存储量将成4的指数增长,这在现实条件下是不可能的。因为每个节点都有四个分支(二输入十六状态的网格图),因此我们对于j时刻到达的某一状态
δi(i=1,2…,S-1),进行加—比—选 *** 作,即将所有可能前一时刻的状态的最大似然函数∧j-1(δp)与当前接收的序列和前一状态到当前状态的估计码的似然度相加,选择其中最大的作为j时刻i状
态的最大似然函数值,并在幸存序列j(δi)在原来的基础上加上这条最优的路径u〔δp→δi〕。这样给出的算法可以表述为:
� 变量/存储:
� S—状态数(DSL为16);
� T—每一状态的分支数(4);
� j—时刻编号,即第j时刻
�对于用卷积编码完毕的序列可以直接送到数字信号处理器中作IDFT〔5〕变换成串行数据了。每个子带i的二进制码字可以映射成星座图上的复数点(Zi=ai+jbi),为了使输出信号为实信号,频域上的子带i的复数值(i≥N′,N′=N/2)为
��Zi=conj�(ZN-i),(i≥N′,N′=N/2)
即取共轭复数,这样经过离散傅立叶逆变换,得到时域信号:
��此信号经过并/串变换,再通过A/D变换,变成模拟信号送到线路上进行传输。
4仿真结果
� 我们在应用Itex公司的ADSL解决方案中,用该公司提供的局端仿真工具IADT对ADSL链路性能进
行仿真,得到ADSL每个子带(从0~255)的信噪比,再根据这个预测值来确定每个子带的位数和增益值。
从而建立一个与子带一一对应的表,其线路预测的信噪比曲线如图4所示。
我们可以看到,测得的线路上行速率为544
kbps,网络速率(去掉ADSL链路开销)为448 kbps,下行链路速率为8 160 kbps,网络速率为7 616 kbps。
5总 结
� 本文描述了在带宽受限的信道采用DMT和卷积编码相结合的技术,将调制与纠错编码结为一体,高效利用了现有的带宽。随着ADSL技术的逐渐成熟,该编码技术也正在应用于其它领域,如无线通信,针对其信道的衰减特性可以获得较高的带宽利用率。在具体硬件实现上,由于超大规模集成电路的发展,硬件已不再是信号处理的瓶颈了,如以上分析的维特比译码,其对硬件的需求是随着N的增大而迅速增加,需要上十万的门电路实现,现已有单片的维特比译码器,或是在特殊的应用中集成在一块数字芯片中,同时完成RS编码、交织、FFT变换等等。
�参考文献
�
1Asymmetrical Digital Subscriber Lines(ADSL)�ITU-T�Recommendation G992,Geneva,June,1999
2曹志刚,钱亚生现代通信原理北京:清华大学出版社
3Stephen G Wilsondigital Modulation and Coding,○C1996 byPrentice�Hall,Inc
4ANSI T1413�1998,COMMITTEE T1—Telecommunications Working Group T1E14 T1E14/98�007R5,1998
5John G ProakisDigital Communications,Third edition,McGraw�Hill 1998
FPGA由可配置逻辑块(CLB)与可编程互连相结合的网格构成。制造完成后,FPGA还可以重新编程,以满足特定的功能或应用需求。这一特性使FPGA有别于专用集成电路(ASIC)。后者是明确地为给定的目标而制定的,以后无法更改。虽然一次性可编程(OTP)FPGA是一种选择,但基于静态随机存取存储器(SRAM)的型号是最常见的,并且允许随着设计的变化而重新编程。
输入/输出焊盘、可重新编程的互连和可编程逻辑模块组成了一个现场可编程门阵列。触发器或存储器模块可用作现场可编程门阵列逻辑模块中的存储器组件。逻辑块可以执行简单到复杂的计算 *** 作。
现场可编程门阵列和可编程只读存储器芯片有许多相似之处。FPGA可以容纳数千个门阵列,这与可编程只读存储器芯片不同,可编程只读存储器芯片仅限于几百个门阵列。现场可编程门阵列是可重新编程的,而不是ASIC,ASIC是为专业作业而开发的。
计算机用户可以使用现场可编程门阵列自定义微处理器的功能,以满足特定的个性化需求。工程师使用FPGA来创建专用集成电路。晶圆功能的缺乏使得现场可编程门阵列的生命周期更具可预测性。其他优势包括潜在的重制、比其他解决方案更快的上市时间以及简单的设计周期。
FPGA用于许多行业和市场,包括无线通信、数据中心、汽车、医疗和航空航天。
FPGA中的芯片是完全可编程的,这是一个相当大的好处。通过这种方式,它可以变成一个相当大的逻辑电路,一个遵循设计的设置,但用户也可以根据需要进行更新以进行调整。换句话说,如果创建了一个电路卡或电路板,并且FPGA是电路的一个组件,则FPGA在创建过程中被编程,但随后可以重新编程以反映任何修改。
虽然第一批FPGA是在1980年代初推出的,但直到20世纪90年代末才开始流行起来。除了Altera、赛灵思和德州仪器等少数几家企业之外,他们并不为人所知。
ASIC(专用集成电路)用于创建对于常规CPU或GPU来说过于复杂的系统,作为ASIC(专用集成电路)的替代方案。
由于它们使用户能够以更低的成本和更低的功耗生产产品,因此FPGA仍然是当今技术中的一个突出主题。在网络和网络安全等其他应用中,它们也很有帮助。将其与传统微控制器进行比较,传统微控制器无法容纳更大的设计,这是一项相当大的进步。
例如,8051微控制器采用了哈佛设计和CISC指令集。FPGA没有这些内置指令集,这给了设计人员更多的自由度。尽管FPGA经常与高端计算相关联,但消费电子行业的使用也在增加。
现场可编程门阵列芯片已经在顶级显卡中包含许多功能。然而,它们比传统的视频卡更便宜,更耗电。它们还支持许多同步流,并且具有明显更快的吞吐量。因此,基于FPGA的图形卡在游戏机中越来越频繁地使用。
Verilog和VHDL只是FPGA使用的众多不同编程语言中的两种。1984年,硬件描述语言Verilog被创建。它可用于构建系统所需的任何类型的电路,并且是FPGA的设计标准。
另一种基于状态机对FPGA进行编程的常用语言是VHDL。它与Verilog不同,因为它包含更多功能,如数据类型和信号名称,这使得创建复杂电路和提高效率变得更加简单。定义了FPGA编程的语法和语法。
FPGA如何工作?
每个FPGA制造商都有其独特的架构规范。关键组件、原则和功能包括:
1可配置的逻辑块
现场可编程门阵列的基本构建模块是CLB。它是一个逻辑单元,可以设置或编程以执行特定任务。连接块将连接到这些构建基块。这些组件包括携带和控制逻辑、晶体管对和查找表(LUT)。它们执行设计所需的逻辑 *** 作。
可以使用基于逻辑的多路复用器或LUT来创建CLB。基于LUT的逻辑中的模块由D触发器,查找表和2:1多路复用器组成。多路复用器选择正确的输出。
2可编程互连
位于不同逻辑块中的逻辑单元之间的所有独特连接都存在于现场可编程门阵列的这一区域中。包含多个基本半导体开关的开关盒通常用于实现互连。这些电气可编程链路为这些可编程逻辑模块提供了路径。
不同长度的线段可以沿着布线路径找到,并由电气可编程开关连接。FPGA密度由用于布线路径的器件数量决定。FPGA的单元或输入焊盘的输出可以连接到电路中的任何其他单元或焊盘,利用对每个现场可编程门阵列至关重要的可编程互连点。
3可编程路由
可编程路由至关重要,因为它通常占结构表面的百分之五十以上以及应用程序的关键路由延迟。可编程布线由预制线段和预配置的开关组成。通过配置正确的开关组合,功能块的任何输出都可以链接到任何输入。现场可编程门阵列路由架构有两种基本类型。
设计本质上是分层的,高级组件实例化较低级别的模块并链接其中的信号,从而为可编程门阵列提供了动力。可编程门阵列可以使用连接芯片离散部分的短线来构建这些连接,因为在设计层次结构中靠近在一起的模块之间更频繁地进行通信。FPGA的密度和性能受到路由设计的影响。
4可编程I/O模块
接口引脚用于将逻辑模块与外部组件连接起来。现场可编程门阵列和外部电路之间的接口是IOB(输入输出模块),这是一种可编程输入和输出器件,用于满足各种电气特性下输入/输出信号的驱动和匹配需求。I/O块将路由体系结构和CLB连接到外部元素。
在封装引脚和器件的底层电路之间,输入/输出模块提供可编程的单向或双向连接。实现应用需要从头开始构建电路,因为以前的现场可编程门阵列缺乏运行任何软件的处理器。因此,FPGA可能被编程为像OR门一样简单,或者像多核处理器一样复杂。
5片上存储器
集成在FPGA逻辑块中的FFS是FPGA系统中片上存储元件的一种形式。尽管如此,随着现场可编程门阵列逻辑容量的提高,它被用于更广泛的系统中,这些系统几乎总是需要存储器来缓冲和重用芯片上的数据。由于构建由寄存器和LUT组成的大型RAM的密度比SRAM块低100倍左右,因此还需要具有更密集的片上存储。
此外,在现场可编程门阵列上实现的应用程序的RAM要求差异大不相同。
6数字信号处理(DSP)模块
在运输链之前,商业现场可编程门阵列系统中使用的专用算术电路是加法器。
由于需要在利用LUT和携带链的软逻辑中加入乘法器,因此产生了严重的面积和延迟损失。由于用于现场可编程门阵列的高乘法器密度信号处理和通信应用具有相当大的市场份额,设计人员开发了新颖的实现来解决软逻辑乘法器实现效率低下的问题,这称为数字信号处理或DSP。
无乘法分布式算术技术是使用基于LUT的现场可编程门阵列创建高效有限脉冲响应(FIR)滤波器设计的一种方法。乘法器是FPGA系统中作为专用电路进行强化的主要候选者,因为它们在关键应用领域的现场可编程门阵列设计中普遍存在,并且在软逻辑中实现时尺寸、延迟和功耗都降低了。
7系统级互连
DDR内存和以太网的兴起只是FPGA容量和带宽稳步增长的几个原因。管理这些高频端口和不断增长的结构之间的数据流量是一项挑战。这种系统级链路过去是通过设置特定的FPGA逻辑和路由元件来形成软总线来建立的,这些总线在必要的端点之间完成流水线,多路复用和布线。
更宽总线是匹配这些外部接口带宽的唯一方法,因为它们以比现场可编程门阵列结构更高的频率运行。由于大量和物理上很长的总线的组合,定时闭合具有挑战性,并且通常需要对总线进行相当大的流水线处理,从而增加了资源消耗。
现场可编程门阵列的应用
FPGA在各行各业都有广泛的应用,特别是在工业物联网(IoT)领域。它的一些关键应用领域:
1能源行业案例研究
太阳能和风能等可再生能源越来越受欢迎。它们在智能电网中是可靠的,其中法规仍在建立中。输配电(T&D)变电站尤其需要高效的电力网络来实现智能电网的最佳运行。自动化需要持续监控、调节和保护电网的技术,以实现更有效的峰值需求负载管理。FPGA可以提高智能电网的性能和可扩展性,同时保持低功耗。
2使用FPGA设计集成电路
必须首先创建此类电路的体系结构。然后,使用FPGA构建和测试原型,由于这种方法,错误是可以纠正的。一旦原型按预期执行,就会开发一个ASIC项目。这能够节省时间,因为创建集成电路可能是一项劳动密集型和复杂的 *** 作。
此外,它还可以节省资金,因为可以使用单个FPGA来创建同一项目的大量修订版。值得注意的是,当前的张量处理单元(TPU)或加密货币矿工最初是作为FPGA开发的,直到那时它们才被生产出来。
3汽车体验的改善
使用汽车芯片和IP实现车载信息娱乐、舒适性和便利性的解决方案。借助MicrosemiFPGA,车载原始设备制造商(OEM)和供应商可以开发创新的安全应用,如巡航控制、盲点警告和防撞。
FPGA供应商提供网络安全功能,包括信息保证、防篡改和硬件安全,以及纠错内存和低静态功耗等可靠性功能。由于其最小的泄漏和在低功耗环境中工作的能力,基于FPGA的存储可以提供低静态功耗。
4支持实时系统
在实时系统中,当响应时间至关重要时,会使用FPGA。传统CPU的响应时间是不可预测的,因此无法准确估计一旦触发器触发,您将何时收到回复。采用实时 *** 作系统将反应时间保持在预定范围内。
在需要快速响应时间的情况下,这是不够的。系统必须在FPGA中实现所需的方法,利用组合或顺序电路来解决这个问题并保证恒定的响应时间。一旦准备就绪,就可以使用FPGA更改这样的实时系统并将其投入生产。
5航空航天和国防使用案例
为了满足恶劣环境的性能、可靠性和寿命要求,同时提供比传统ASIC实现更大的灵活性,工业制造公司提供了抗辐射可重构的FPGA,这些FPGA通常是空间级的。抗辐射可重构FPGA适用于处理密集型空间系统。
6在通信和软件定义网络(SDN)中的应用
软件定义网络(SDN)和其他算法(如快速傅里叶变换(FFT))必须放入FPGA中,以便在复杂的实时环境中使用。无线电的标准组件包括用于接收和传输信号的天线,以及用于通过过滤、更改信号频率等来处理信号的网络硬件。
这种硬件无法从根本上改变它所要实现的功能。如今,此功能的很大一部分被转移到电子设备中,这通常是FPGA。模拟器件通常仅限于天线、ADC和DAC转换器。
7数据中心和云中的FPGA
物联网(IoT)和大数据正在产生获取和处理的数据的指数级增长。这与通过 并行的多个 *** 作的深度学习技术进行计算分析相结合,导致对低延迟,灵活和安全的计算能力的高需求。由于空间成本不断增加,无法通过添加更多服务器来解决。
由于FPGA能够加速处理,设计灵活性以及硬件对软件的安全性,数据中心世界的大门正在在很大程度上向他们敞开。
8计算机视觉系统
在现代世界中,计算机视觉系统存在于许多小工具中。视频监控摄像机,机器人和其他设备就是这方面的例子。许多这些小工具通常需要基于FPGA的系统,以便它们能够根据人的位置,周围环境和面部识别功能,以有意义的方式与人进行行动和交互。要使用此功能,必须处理许多照片,其中大多数 *** 作都是实时完成的,以检测物体,识别人脸等。
能用到不常用,比如说视频传输就会用到8b/10b编码。通信会用到fft,主要是看你用fft做什么工作,最常用的还是verilog逻辑。而且你说的这些都是ip核,不需要matlab和simulink也能做
用DM软件进行FFT转换。
首先,要确定你的手机支持的视频格式、手机屏幕分辨率以及解码能力,转码后的视频分辨率一般小于等于手机分辨率即可,视频的清晰度取决于码率(比特率),另外编码格式对视频的质量影响也比较大,目前手机很少支持H246编码的视频,这些参数在格式工厂的“输出配置”里都可以自行设定,楼主可以对同一视频以不同编码,不同比特率重新转换,就可以试出自己的手机所支持的、最清晰的视频的参数,以后就可以以这个参数转换视频在手机上播放。
转换文件量主要在于视频尺寸,但是尺寸小了(包括其他参数),全屏又不清晰,本来就是矛盾的。
以上就是关于《自然》评选改变科学的10个计算机代码项目全部的内容,包括:《自然》评选改变科学的10个计算机代码项目、网格编码调制的原理、fpga 是什么做什么的什么平台一定采纳等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)