精华内容
下载资源
问答
  • 二进制文件是由位的序列构成的,它存储的数据以二进制的形式表示,使用JVM阅读,二进制文件的优点就是比文本文件的效率更高。二进制文件与主机编码方案无关因此可移植。JAVA程序在任何机器上都可以访问Java程序创建...

    JAVA提供了很多进行文件输入输出的类,主要分为文本I/O类和二进制I/O类。

    先理解以下这两者之间的区别:

    文本文件和二进制文件

    文本文件是由字符的序列构成的,它存储的数据是以人能读懂的方式表示的,可以使用文本编辑器进行阅读,文件名的扩展名为。txt。

    二进制文件是由位的序列构成的,它存储的数据以二进制的形式表示,使用JVM阅读,二进制文件的优点就是比文本文件的效率更高。二进制文件与主机编码方案无关因此可移植。JAVA程序在任何机器上都可以访问Java程序创建的二进制文件,文件的扩展名为.dat。

    文本I/O和二进制I/O

    文本I/O是二进制I/O基础上的一层抽象。它封装了字符的编码和解码过程它在向文件进行读写过程中进行解码和编码。在美国Windows默认的编码方案是ASCII码,在中国默认的编码方案是GBK,GBK和UTF-8是两种常见的编码方案。

    二进制I/O不要求转化,如果使用二进制I/O向文件写入数据,就是讲内存中的确切值复制到文件中。内存中的数值和文件中显示的数值的形式是一样的。

    对于二进制文件首先要理解以下几个问题:

    1、什么是二进制文件?(上面已经进行介绍)

    2、输入和输出的方向

    输入方向从文件中读取数据的方向也可以理解文件向程序进行输入,输出方向是用程序向文件中传输数据的方向(output.printwriter)

    3、输入流和输出流

    输入流----输入对象,输出流----输出对象

    输入输出对象可以为7大数据类型也可为字符和字符串

     

    然后最后需要掌握的就是输入输出流的子类:FileInputStream、ObjectInputStream、DataInputStream、BufferInputStream以及对应的输出流。这里他们有很多相似的知识点,至于区别和联系可以在日后联系过程中慢慢理解和记忆

    展开全文
  • 莫尔斯并不是第一个将书面语言的字母成功编码的人。实际上,在因自己名字被用来命名某种编码方式而名声大噪人中,莫尔斯先生也不是第一人。这项荣誉应该归一个法国盲人小伙子所有。尽管他比莫尔斯要晚出生18年,...

      塞缪尔.莫尔斯并不是第一个将书面语言的字母成功编码的人。实际上,在因自己的名字被用来命名某种编码方式而名声大噪的人中,莫尔斯先生也不是第一人。这项荣誉应该归一个法国盲人小伙子所有。尽管他比莫尔斯要晚出生18年, 但是他最早就创建了自己的骗码规范。他的生平鲜为人知,尽管关于他的故事流传至今的为数不多,但这也不足以构成一个引人入目的传奇。

      路易斯.布莱叶(Louis Braille)于1809年出生于法国库普雷,这是一个距离巴黎市东只有25英里的小镇。布莱叶的父亲是一个马具匠人。在布莱叶3岁的时候——一个本不该在父亲的工作间玩耍的年纪——他不小心被一个尖锐的工具刺伤了一只眼睛。伤口感染也影响到了他的另一只眼睛,最后使他的双目完全失明。按常理,布莱叶将在无知和贫困中度过自己的一生(就像当时大部分盲人一样),但是小路易斯对知识的渴望和过人的智慧很快被人们发现。他最初同其他孩子一样在镇上的小学上学,后来在他10岁的时候,在小镇牧师和一名学校老师的帮助下,布莱叶被送往巴黎皇家盲人学校学习。

      很显然,盲人教育中一个主要的障碍就是盲人无法阅读印刷的书籍。瓦伦丁.霍伊(1745-1822),巴黎皇家盲人学校的创始人,曾发明过一种在纸面上印下凸起文字的系统,这样盲人就可以通过接触的方式进行阅读了。但是这种文字系统使用起来很困难,而且使用这种方法来印刷的书籍也非常少。

      霍伊先生视力健全,因此他被自身的感知模式所禁锢。对他来说,一个字母A就是一个字母A,而字母A在记录时也必须看起来(或者感觉起来)像一个A(如果让他用手电筒交流的话,估计也会像我们开始那样,试图在空中比划出要表达的字母,但其实我们发现这法子根本不灵)。霍伊先生也许没有意识到,有一种完全不同于印刷字母的文字系统可能更适合盲人阅读。

      这种非常规编码方式起源说出来可能有些出人意料。查尔斯. 巴比尔(Charles Barbier),法国军队的一位军官, 在1819年发明了一种他自称为“écriture nocturne”(也叫“夜间书写”)的文字系统。他在厚纸上使用凸起的点和划组合来表示文字,这样当部队需要无声交流的时候,即使光线很暗,士兵们也可以通过这些符号互相传递信息。他们使用一个锥形的铁笔在厚纸的背面书写,这样纸的正面就会有相应的凸起,然后人们就可以使用手指触摸这些凸起的点和划来进行阅读了。

      巴比尔文字系统的缺点是太过复杂了。该系统并非使用与字母相对应的点划编码串来表示字母,而是用与读音相对应的编码串表示,因此有时仅仅是为了表示一个单词,就不得不使用很多的码字。如果只是传递简短的消息,这个系统用起来倒还不错,但是在表示长文本的时候,就明显力不从心,就更别说用来对整本书进行编码了。

      布莱叶在12岁的时候就很熟悉巴比尔的这种文字系统了。他特别喜欢使用凸起的点,不仅仅因为凸起来的点通过手指就可以很容易实现阅读,还因为它们“写”起来也很简单。在教室里,一个盲人学生如果有了纸张和铁笔,他就可以做笔记,而且同时还能阅读记下来的文字。路易斯.布莱叶开始不辞辛劳地改进这个文字系统, 3 年后(那时他15岁)就创建了自己的系统,而这个系统中的一些基本规范,直到今天仍在被人们所使用。在很长一段时间内,这种新的文字系统只被他们学校内部的人们所熟悉,但是渐渐地,布莱叶盲文传播到了世界各个角落。1835年,路易斯.布莱叶患上了肺结核。1852年,就在布莱叶43岁生日刚过完不久,病魔无情地夺走了他的生命。 

      如今,在引导盲人进入文学殿堂的道路上,改进后的布莱叶盲文仍然是不可替代的工具,特别是对于又聋又哑的人来说,布莱叶盲文仍然是他们开启阅读大门的唯一钥匙。近些年来,布莱叶盲文越来越多地应用到公共场所中,使得盲人朋友们可以越来越方便地使用电梯、自动取款机等设备。

      在这一章中我们将解析布莱叶盲文,来看看它是如何工作的。我们并不是要真的学习布莱叶盲文,而且也无须刻意记住什么关于它的内容。我们仅仅希望从中窥探到编码的一些本质。

      在布莱叶盲文中,每个在书写文字中用到的符号——具体来说就是字母、数字和标点符号——都被编成2*3的点码单元中的一个或者多个凸起的点。这个点码单元包含的点通常用1到6的数字进行编号。

    1 4
    2 5
    3 6

      在现代应用中,使用特殊的打印机或轧花机可以将布莱叶盲文印到纸张上。

      即使只是用布莱叶盲文在本书中印上几页,造价也实在是有点高,所以我在书中使用一和符号来表示布莱叶盲文。在这种表示方法中,点码单元所有的6个点都会被表示出来。大点表示这是一个凸起的点,小点则表示其对应的位置是平的。例如,下面的布莱叶盲文:

     

    ●♥
    ●♥
    ●♥

      其中,第1, 3, 5点是凸起的,而2,4, 6点的位置是平的。

      令我们感兴趣的是,这些点码都是二进制的。一个单独的点不是平的就是凸起的。也就是说我们可以把莫尔斯编码中学到的知识应用到布莱叶盲文的分析中!我们现在已经知道,每组有62上点,并且每个点有平和凸两种状态,因此6个可平要凸的点的组合数就是2*2*2*2*2*2,即26,也就是64。

      因此,布莱叶盲文系统能够表示64个不同的码字。下图就是所有可能的64种码字。

    ••

    ••

    ••

    •♥

    ••

    ••

     

    ••

    •♥

    ••

     

    •♥

    •♥

    ••

    ••

    ••

    •♥

     •♥

    ••

    •♥

    ••

    •♥

    •♥

    •♥

    •♥

    •♥

    ♥•

    ••

    ••

    ♥♥

    ••

    ••

     

    ♥•

    •♥

    ••

     

    ♥♥

    •♥

    ••

    ♥•

    ••

    •♥

     ♥♥

    ••

    •♥

    ♥•

    •♥

    •♥

    ♥♥

    •♥

    •♥

    ••

    ♥•

    ••

    •♥

    ♥•

    ••

    ••

    ♥♥

    ••

    •♥

    ♥♥

    ••

     ••

    ♥•

    •♥

     •♥

    ♥•

    •♥

    ••

    ♥♥

    •♥

    •♥

    ♥♥

    •♥

    ♥•

    ♥•

    ••

    ♥♥

    ♥•

    ••

    ♥•

    ♥♥

    ••

    ♥♥

    ♥♥

    ••

     ♥•

    ♥•

    •♥

    ♥♥

    ♥•

    •♥ 

    ♥•

    ♥♥

    •♥

    ♥♥

    ♥♥

    •♥

    ••

    ••

    ♥•

    •♥

    ••

    ♥•

    ••

    •♥

    ♥•

    •♥

    •♥

    ♥•

    ••

    ••

    ♥♥

     •♥

    ••

    ♥♥

    ••

    •♥

    ♥♥

    •♥

    •♥

    ♥♥

    ♥•

    ••

    ♥•

    ♥♥

    ••

    ♥•

    ♥•

    •♥

    ♥•

    ♥♥

    •♥

    ♥•

     ♥•

    ••

    ♥♥

     ♥♥

    ••

    ♥♥

    ♥•

    •♥

    ♥♥

    ♥♥

    •♥

    ♥♥

     

    ••

    ♥•

    ♥•

     

    •♥

    ♥•

    ♥•

    ••

    ♥♥

    ♥•

    •♥

    ♥♥

    ♥•

     ••

    ♥•

    ♥♥

     •♥

    ♥•

    ♥♥

     ••

    ♥♥

    ♥♥

    •♥

    ♥♥

    ♥♥

    ♥•

    ♥•

    ♥•

    ♥♥

    ♥•

    ♥•

    ♥•

    ♥♥

    ♥•

    ♥♥

    ♥♥

    ♥•

    ♥•

    ♥•

    ♥♥

    ♥♥

    ♥•

    ♥♥

    ♥•

    ♥♥

    ♥♥

    ♥♥

    ♥♥

    ♥♥

     

      假如发现布莱叶盲文中用到的码字数目少于64,就会有人问了,为什么64个可能的码字中有一些被遗弃不用呢?假如我们发现布莱叶盲文中用到的数目超过64,问题就更严重了,我们会怀疑自己的智商,甚至怀疑基本的数学原理——到底2加2是不是等于4。

      还是让我们来开始解析布莱叶盲文吧,首先看看基本的小写字母表。

    ♥•

    ••

    ••

    a

    ♥•

    ♥•

    ••

    b

    ♥♥

    ••

    ••

    c

    ♥♥

    •♥

    ••

    d

    ♥♥

    •♥

    ••

    e

    ♥♥

    ♥•

    ••

    f

    ♥♥

    ♥♥

    ••

    g

    ♥•

    ♥♥

    ••

    h

    •♥

    ♥•

    ••

    i

    •♥

    ♥♥

    ••

    j

    ♥•

    ••

    ♥•

    k

    ♥•

    ♥•

    ♥•

    l

    ♥♥

    ••

    ♥•

    m

    ♥♥

    •♥

    ♥•

    n

    ♥•

    •♥

    ♥•

    o

    ♥♥

    ♥•

    ♥•

    p

    ♥♥

    ♥♥

    ♥•

    q

    ♥•

    ♥♥

    ♥•

    r

    •♥

    ♥♥

    ♥•

    s

    •♥

    ♥♥

    ♥•

    t

     ♥•

    ••

    ♥♥

    u

    ♥•

    ♥•

    ♥♥

    v

     ♥♥

    ••

    ♥♥

    x

    ♥♥

    •♥

    ♥♥

    y

    ♥•

    •♥

    ♥♥

    z

             

     

      例如,词组“you and me”用布莱叶盲文表示:

    ♥♥

    •♥

    ♥♥

    ♥•

    •♥

    ♥•

     ♥•

    ••

    ♥♥

       

    ♥•

    ••

    ••

    ♥♥

    •♥

    ♥•

    ♥♥

    •♥

    ••

       

    ♥♥

    ••

    ♥•

    ♥♥

    •♥

    ••

    y o u     a n d     m e

      注意, 一个单词中每个字母所对应的点码单元之间都用一小块空白分开;而单词之间则用一大的空格(实际上是没有凸点的点码单元)所分隔开来。

      这就是路易斯.布莱叶制定的盲文的基本规范,至少它对于拉丁字母很适用。布莱叶还制定了表示重音符号的编码,这在法语中要经常用到。注意这里没有"W"这个字母的编码,因为在传统的法语中不会用到它(别担心,这个字母最后会出现的,下文将作讲解)。到此为止,64个码字中只使用了25个。

      经过仔细的检查, 你会发现,从我们列举的那三排布莱叶盲文的例子(小写字母表)中,可以总结出一个规律。每一排(字母a到j)只用到了点码单元中最上面的四个点----第1、 2、 4和5点。 第二排在复用了第一排的编码的基础上,把第3点改为凸点。第三排也沿用了同样的规律,只是将第3和6点改为凸点。

      自从路易斯.布莱叶发明布莱叶盲文以来,其应用已经扩展到了各个领域。目前在英文出版物中最常见的盲文系统称为二级布莱叶盲文(Grade 2 Braille)。 二级布莱叶盲文使用了很多缩写,以便于保存树型结构和提高阅读速度。 例如,如果字母的码字单独出现,它们就是一个普通的单词,以下三排图样(包含“完整的”每三排)为我们展示了这些单词的码字。 

     

    ♥•

    ••

    ••

    (none)

    ♥•

    ♥•

    ••

    but

    ♥♥

    ••

    ••

    can

    ♥♥

    •♥

    ••

    do

    ♥♥

    •♥

    ••

    every

    ♥♥

    ♥•

    ••

    from

    ♥♥

    ♥♥

    ••

    go

    ♥•

    ♥♥

    ••

    have

    •♥

    ♥•

    ••

    (none)

    •♥

    ♥♥

    ••

    just

    ♥•

    ••

    ♥•

    knowledge

    ♥•

    ♥•

    ♥•

    like

    ♥♥

    ••

    ♥•

    more

    ♥♥

    •♥

    ♥•

    not

    ♥•

    •♥

    ♥•

    (none)

    ♥♥

    ♥•

    ♥•

    people

    ♥♥

    ♥♥

    ♥•

    quite

    ♥•

    ♥♥

    ♥•

    rather

    •♥

    ♥♥

    ♥•

    so

    •♥

    ♥♥

    ♥•

    that

     ♥•

    ••

    ♥♥

    us

    ♥•

    ♥•

    ♥♥

    very

     ♥♥

    ••

    ♥♥

    it 

    ♥♥

    •♥

    ♥♥

    you 

    ♥•

    •♥

    ♥♥

    as 

     ♥♥

     ♥•

     ♥♥

    and

     

    ♥♥

    ♥♥

    ♥♥

    for

     

    ♥•

    ♥♥

    ♥♥

    of 

     

     •♥

    ♥•

    ♥♥

    the 

     

    •♥

    ♥♥

    ♥♥

    with

     

      因此,短语“you and me ”使用二级布莱叶盲文就可以表示为:

     

    ♥♥

    •♥

    ♥♥

       

     

     ♥♥

     ♥•

     ♥♥

       

     

    ♥♥

    ••

    ♥•

     

    ♥♥

    •♥

    ••

    you     and     m e

     

      到目前为止,我们已经描述了31个码字——单词间的大空格(即没有凸起的点码单元)以及总共3排每排10个字母和单词码字。与理论上可以达成到的最多码字数——64相比,我们还差得远呢。正如从下面的分析中我们将看到的那样,在二级布莱叶盲文里,没有任何的码字会被浪费。

      首先, 我们可以使用字母a到j的码字加6号凸点的组合。这些码字通常用来表示单词中字母串缩写,还有我们前面所担心的w字母(像上文的二级布莱叶盲文单词编码一样,表示w字母的编码也可以表示一个单词)。

    ♥•

    ••

    •♥

    ♥•

    ♥•

    •♥

    ♥♥

    ••

    •♥

    ♥♥

    •♥

    •♥

    ♥•

    •♥

    •♥

    ♥♥

    ♥•

    ••

    ♥♥

    ♥♥

    •♥

    ♥•

    ♥♥

    •♥

    •♥

    ♥•

    ••

    •♥

    ♥♥

    •♥

    ch gh sh th wh ed er ou ow w
                      will

      例如,单词“about”使用二级布莱叶盲文可以记作:

    ♥•

    ••

    ••

       

    ♥•

    ♥•

    ••

       

    ♥•

    ♥♥

    •♥

       

    •♥

    ♥♥

    ♥•

     
    a     b      ou      t

      然后,我们取从a到j的码字,“降低”它们使用的点位,只用到编号为2,3, 5 和 6 的点,这样就得到了新的码字。根据上下文环境,它们将被用来表示一些标点符号或者字符串缩写。

    ••

    ♥•

    ••

     

    ••

    ♥•

    ♥•

     

    ••

    ♥♥

    ••

     

    ••

    ♥♥

    •♥

     

    ••

    ♥•

    •♥

     

    ••

    ♥♥

    ♥•

     

    ••

    ♥♥

    ♥♥

     

    ••

    ♥•

    ♥♥

     

    ••

    •♥

    ♥•

     

    ••

    •♥

    ♥♥

    ea   bb   cc   dis   en   to   gg   his   in   was
          .       !   ()   "       "

     

      前4个码字分别表示逗号、分号、冒号和句号。需要注意的是,左右括号使用的是相同的码字,但是开闭引号却是不同的码字。

      目前为止我们已经定义了51个码字。“占用3,4, 5 和 6 号点”的码字还有很多组没有被定义,下面的6组就是这些被遗漏的码字,我们也用它们来表示一些字符串缩写和其他标点符号。

    •♥

    ♥•

    ••

     

    •♥

    ••

    ♥♥

     

    •♥

    •♥

    ♥♥

     

    •♥

    •♥

    ♥•

     

    ••

    ♥•

    ••

     

    ••

    ♥♥

    ••

     
    st   ing   ble   ar       com  
    /       #           -  

      表示字符串缩写“ble”的码字很重要,因为当它不是用来作为单词的一部分时,它的出现就意味着之后的码字应译为数字。表示数字的码字与表示字母a 到j 的码字是相同的

    ♥•

    ••

    ••

     

    ♥•

    ♥•

    ••

     

    ♥♥

    ••

    ••

     

    ♥♥

    •♥

    ••

       

    ♥•

    •♥

    ••

     

    ♥♥

    ♥•

    ••

     

    ♥♥

    ♥♥

    ••

     

    ♥•

    ♥♥

    ••

     

    •♥

    ♥•

    ••

     

    •♥

    ♥♥

    ••

    1   2   3   4     5   6   7   8   9   0

      因此,下面这组编码:

    •♥

    •♥

    ♥♥

     

    ♥•

    ♥•

    ••

     

    ♥•

    •♥

    ••

     

    ♥♥

    ♥•

    ••

                 
    #   2   5   6

      如果你还要继续下去,那么我们还需要定义7个码字才算完全用满原有的64个码字。它们是:

    •♥

    ••

    ••

     

    •♥

    •♥

    ••

     

    •♥

    •♥

    •♥

     

    ••

    •♥

    ••

     

    •♥

    ••

    •♥

     

    ••

    •♥

    •♥

     

    ••

    ••

    •♥

                             

    第一个码字(4号点凸起)用来表示音调符号(accent indicator)。 其他的码字则用来表示缩写的前缀或者其他的功能: 4号和6号点凸起的码字(上表的第5个码字),根据上下文用来表示小数点或者强调符号(emphasis indicator)。 5号和6号点凸起的编码,表示与“数字标识符”相对应的“字母标识符”(letter indicator)。

      最后(如果你现在还为布莱叶盲文如何表示大写字母忧心忡忡的话), 我们还有6号凸点——大写标识符。这个符号表示它之后的字母将被译为大写。例如,我们可以把这套文字系统的原创者的名字记做。

    ••

    ••

    •♥

     

    ♥•

    ♥•

    ♥•

     

    ♥•

    ♥♥

    •♥

     

    •♥

    ♥•

    ••

     

    •♥

    ♥•

    ♥•

       

    ••

    ••

    •♥

     

    ♥•

    ♥•

    ••

     

    ♥•

    ♥♥

    ♥•

     

    ♥•

    ••

    ••

     

    •♥

    ♥•

    ••

     

    ♥•

    ♥•

    ♥•

     

    ♥•

    ♥•

    ♥•

     

    ♥•

    •♥

    大写   L   ou   i   s     大写   B   r   a   i   l    l    e

      这串编码分别表示了一个大写字母标识符、字母l、缩写字符串o、字母i和s, 以及一个空格,再加一个大写字母标识符, 还有字母b、 r, a, i, l, l 和 e。 (在实际应用中,可能会把名字末尾不发音的2个字母省略掉,以进一步压缩编码)

      综上所述,我们将6位二进制码(其实6个点)所能表示的全部64种可能的编码都罗列了一遍。而且这64组编码中有很大一部分,根据上下文的不同将有着双重身份。 尤其值得注意的是数字标识符和取消“数字标识状态”的字母标识符。它们改变了后面编码的意义——从表示字母到表示数字,又从表示数字回到表示字母。像这样的编码通常被称作“优先码”(procedence codes)或者“换挡码”(shift codes)。它们改变着作用域内编码的含义,直到作用域结束。

      大写字母标识符表示紧随它的字母(而且仅仅是紧随它的字母)应该被译为大写。类似这样的编码被称为“逃逸码”(escape codes)。 逃逸码让你“逃离”对编码串单调的、一成不变的解析,而转入一种新的解析方式中。 在以后的章节中我们将看到,在使用二进制码对书面语言进行编码时,换挡码和逃逸码是相当常见的。

     

    转载于:https://www.cnblogs.com/666638zhangqiang/p/8087793.html

    展开全文
  • 本节通过硬件描述语言Verilog HDL对进制编码描述,介绍Verilog HDL程序基本结构及特点。 进制编码器及Verilog HDL描述 进制编码器是数字电路中常用电路单元,它输入是代表0~9这10个输入端...

    本节通过硬件描述语言Verilog HDL对二十进制编码器的描述,介绍Verilog HDL程序的基本结构及特点。

    二十进制编码器及Verilog HDL描述

    二十进制编码器是数字电路中常用的电路单元,它的输入是代表0~9这10个输入端的状态信息。输入信号为高电平时,输出相应的BCD码,因此也称为10线4线编码器。其功能表及电路符号如图3-1所示。

     

    图3-1 二十进制编码器

    【例3-1】利用Verilog HDL对二十进制编码器进行设计。

     

    Verilog HDL程序的基本构成

    从例3-1可以看出,一个完整的Verilog HDL程序由3个基本部分构成,分别是:模块端口定义部分、信号类型说明部分和逻辑功能描述语句部分。其结构图如3-2所示。

     

    图3-2 Verilog HDL程序基本结构

    模块端口定义部分

    对于硬件描述语言来说,一个程序代表了一个具有某种逻辑功能的电路,模块端口定义部分描述了该电路的接口部分的信息,即输入输出信号的信息。

    模块端口定义部分的语法结构如下:

    module模块名(端口信号1,端口信号2,端口信号3,端口信号4,……);

    input[width:0]端口信号1,端口信号3,……;

    output[width:0]端口信号2,端口信号4,……;

    程序以关键词module引导,模块名是设计者对于设计的电路所取的名字,在模块端口定义的第1行列出了所有进出该电路模块的端口信号,在第2行和第3行中定义了各端口信号流动方向。流动方向包括输入(input)、输出(output)和双向(inout),[width:0]表示信号的位宽,如果位宽没有特别说明,则系统默认为1位宽度。

    【例3-2】模块端口定义举例。

     

    信号类型说明部分

    在Verilog HDL语法中,信号共有两种数据类型,分别为:网线类型(net型)和寄存器类型(register型)。在信号类型说明部分除了要对输入/输出端口的信号类型进行说明之外,还要对程序中定义的中间量的数据类型进行说明。

    信号类型说明部分的语法结构如下:

    wire[width:0]信号1,信号2,……;

    reg[width:0]信号3,信号4,……;

    【例3-3】信号类型说明举例。

     

     

     

    逻辑功能描述语句部分

    逻辑功能描述语句部分对输入/输出信号之间的逻辑关系进行了描述,是Verilog HDL程序设计中最主要的部分,在电路上相当于器件的内部电路结构。在Verilog HDL语言中,常用的逻辑功能描述语句可以分为以下3种:

    例化语句:调用已进行元件化封装的程序。这种语句常应用于层次化设计的顶层文件设计中。

    【例3-4】例化语句举例。

     

    该语句分别调用了一个非门和与门电路模块。

    连续赋值语句:描述信号之间简单的赋值关系。在连续赋值语句中,右边表达式使用的操作数无论何时发生变化,右边表达式都重新计算。这类描述通常以关键词assign引导。

    【例3-5】连续赋值语句举例。

     

    该语句描述了输出信号与输入信号的赋值关系。

    过程语句:以关键词always、initial等关键词引导的语句,描述了一定条件下信号之间的赋值关系。这种变量数据被赋值后,其值保持不变,直到下一次条件具备时对它们重新赋值。

    【例3-6】过程语句举例。

    本文转自小平头电子技术社区: https://www.xiaopingtou.cn/article-104211.html 嵌入式,物联网,硬件PCB,电子技术尽在小平头

    与连续赋值语句一样,always和initial也描述了输出信号与输入信号的赋值关系,但是这种赋值往往是一种比较复杂的条件赋值,例如,例3-6就用了if……else语句描述了输出信号与输入信号的条件关系。

    展开全文
  • R-S(Reed-Solomon)码是一类纠错能力很强特殊二进制BCH码,能应对随机性和突发性错误,广泛应用于各种通信系统中和保密系统中。R-S(255,223)码能够检测32字节长度和纠错16字节长度连续数据错误信息。
  • 本节通过硬件描述语言Verilog HDL对进制编码描述,介绍Verilog HDL程序基本结构及特点。进制编码器及Verilog HDL描述进制编码器是数字电路中常用电路单元,它输入是代表0~9这10个输入端状态...

    本节通过硬件描述语言Verilog HDL对二十进制编码器的描述,介绍Verilog HDL程序的基本结构及特点。

    二十进制编码器及Verilog HDL描述

    二十进制编码器是数字电路中常用的电路单元,它的输入是代表0~9这10个输入端的状态信息。输入信号为高电平时,输出相应的BCD码,因此也称为10线4线编码器。其功能表及电路符号如图3-1所示。

    cb87bdd54515aca2b4df7f273eb57bd6.png

    图3-1 二十进制编码器

    【例3-1】利用Verilog HDL对二十进制编码器进行设计。

    a1fbae96ddd638c6a6fbcc2b612f5c45.png

    Verilog HDL程序的基本构成

    从例3-1可以看出,一个完整的Verilog HDL程序由3个基本部分构成,分别是:模块端口定义部分、信号类型说明部分和逻辑功能描述语句部分。其结构图如3-2所示。

    1dee3a5a19ebf3b016e343cc493b973d.png

    图3-2 Verilog HDL程序基本结构

    模块端口定义部分

    对于硬件描述语言来说,一个程序代表了一个具有某种逻辑功能的电路,模块端口定义部分描述了该电路的接口部分的信息,即输入输出信号的信息。

    模块端口定义部分的语法结构如下:

    module模块名(端口信号1,端口信号2,端口信号3,端口信号4,……);

    input[width:0]端口信号1,端口信号3,……;

    output[width:0]端口信号2,端口信号4,……;

    程序以关键词module引导,模块名是设计者对于设计的电路所取的名字,在模块端口定义的第1行列出了所有进出该电路模块的端口信号,在第2行和第3行中定义了各端口信号流动方向。流动方向包括输入(input)、输出(output)和双向(inout),[width:0]表示信号的位宽,如果位宽没有特别说明,则系统默认为1位宽度。

    【例3-2】模块端口定义举例。

    0237b1f6ba926b7d6e7c04b975844d67.png

    信号类型说明部分

    在Verilog HDL语法中,信号共有两种数据类型,分别为:网线类型(net型)和寄存器类型(register型)。在信号类型说明部分除了要对输入/输出端口的信号类型进行说明之外,还要对程序中定义的中间量的数据类型进行说明。

    信号类型说明部分的语法结构如下:

    wire[width:0]信号1,信号2,……;

    reg[width:0]信号3,信号4,……;

    【例3-3】信号类型说明举例。

    c1d2cbdbb8d85858b668e90f17dbc891.png
    fcb24eae09c1568833afdf195fd1b22b.png

    逻辑功能描述语句部分

    逻辑功能描述语句部分对输入/输出信号之间的逻辑关系进行了描述,是Verilog HDL程序设计中最主要的部分,在电路上相当于器件的内部电路结构。在Verilog HDL语言中,常用的逻辑功能描述语句可以分为以下3种:

    例化语句:调用已进行元件化封装的程序。这种语句常应用于层次化设计的顶层文件设计中。

    【例3-4】例化语句举例。

    37968bc30e7ba43821c34338f7f86fa4.png

    该语句分别调用了一个非门和与门电路模块。

    连续赋值语句:描述信号之间简单的赋值关系。在连续赋值语句中,右边表达式使用的操作数无论何时发生变化,右边表达式都重新计算。这类描述通常以关键词assign引导。

    【例3-5】连续赋值语句举例。

    a48e74b624df75f26426dbb62c6d7957.png

    该语句描述了输出信号与输入信号的赋值关系。

    过程语句:以关键词always、initial等关键词引导的语句,描述了一定条件下信号之间的赋值关系。这种变量数据被赋值后,其值保持不变,直到下一次条件具备时对它们重新赋值。

    【例3-6】过程语句举例。

    db486d533cf7004a5d17492d0d1a86df.png

    与连续赋值语句一样,always和initial也描述了输出信号与输入信号的赋值关系,但是这种赋值往往是一种比较复杂的条件赋值,例如,例3-6就用了if……else语句描述了输出信号与输入信号的条件关系。

    展开全文
  • 字符编码的那些事儿

    2019-03-12 00:21:16
    而我们人类所能理解的语言文字则是一套由英文字母、汉语汉字、标点符号字符、阿拉伯数字等等很多的字符构成的字符集。如果要让计算机来按照人类的意愿进行工作,则必须把人类所使用的这些字符集转换为计算机所能理解...
  • unicode字符是目前计算机中通用字符编码,它为针对不同语言每个字符设定了统一的二进制编码,用于满足跨越语言、跨平台文本转换、处理要求。char定义非常简单,如下: char ch1=‘z’; 但是,char只能...
  • 而我们人类所能理解的语言文字则是一套由英文字母、汉语汉字、标点符号字符、阿拉伯数字等等很多的字符构成的字符集。如果要让计算机来按照人类的意愿进行工作,则必须把人类所使用的这些字符集转换为计算机所能理解...
  • 扫盲字符编码

    2020-06-29 10:15:56
    我们人类交流的主要方式是语言,而语言往往是由大量的符号构成的,所以很自然的就会想到使用二进制编码,对应到指定的符号,即一个唯一的编码对应一个唯一的符号。在这里说两个概念; 字符集:一堆符号
  • unicode字符是目前计算机中通用字符编码,它为针对不同语言每个字符设定了统一的二进制编码,用于满足跨越语言、跨平台文本转换、处理要求。char定义非常简单,如下: char ch1=‘z’;...
  • 程序设计语言 ...其是由0和1两个数字组成的二进制编码构成的,是计算机硬件直接识别并执行的程序设计语言。 汇编语言 为了方便人们记忆并简化编程过程,人们发明了汇编语言。汇编语言给每一条机器指令
  • 引言想必大家之前一定 会被字符编码困惑。ASCII,GB2312,Unicode,GB18030等等,或者说大家遇到过文件...我们人类交流的主要方式是语言,而语言往往是由大量的符号构成的,所以很自然的就会想到使用二进制编码,对...
  • 由于计算机内部只能接受...机器语言是直接用二进制代码指令表达计算机语言,指令是用0和1组成一串代码,它们有一定位数,并分成若干段,各段的编码表示不同含义,例如某台计算机字长为16位,即有16个二进制...
  • Unicode字符是目前计算机中通用字符编码,他为针对不同语言每个字符设定了统一的二进制编码,适用于满足跨语言、跨平台文本转换、处理要求。Char定义非常简单,可以通过下面代码定义字符: char a = ...
  • 字符串编码详解

    2019-03-29 11:09:42
    字符串编码的区别转载 ...编码的由来: ...而我们人类所能理解的语言文字则是一套由英文字母、汉语汉字、标点符号字符、阿拉伯数字等等很多的字符构成的字符集。如果要让计算机来按照人类的意愿进行工作,则...
  • Chapter 7 低级程序设计语言7.1 计算机操作对计算机重新定义: 计算机是能够存储、...7.3 机器语言(* 建议看书 *)机器语言(machine language): 由计算机直接执行的二进制编码指令构成的语言 每条机器指令都只能执行一个
  • 关于字符编码那点事

    2021-02-09 22:38:13
    我们知道,计算机只能理解0、1这样的二进制数,而我们人类的语言却是由英文、中文等语言再加上阿拉伯字母等构成的一个超级复杂的语言系统。那么为了能够在计算机存储我们的语言,我们必须制定一个规则,这个规则规定...
  • 编码和文件读写

    2020-08-14 22:29:25
    编码:让只认识0和1的计算机,能够理解我们人类使用的语言符号,并将数据转换为二进制进行存储和传输。 编码表:从人类语言到计算机语言转换的形式 1.1 二进制 位:用来存放一位0或1,就是计算机里 最小的 存储单位...
  • 漫谈计算机编码

    2018-03-09 15:04:04
    所以从我们能看懂人类信息转变为机器级别的二进制语言的过程就可以理解为一种编码的过程,自然,相反过程就是所谓解码过程。 可以这么说,所有乱码都是源于解码方式与编码方式不一致。就好像我用英文给...
  • 而我们人类所能理解的语言文字则是一套由英文字母、汉语汉字、标点符号字符、阿拉伯数字等等很多的字符构成的字符集。如果要让计算机来按照人类的意愿进行工作,则必须把人类所使用的这些字符集转换为计算机所能理解...
  • 字符集常常和一种具体的语言文字对应起来,该文字中的所有字符或者大部分常用字符就构成了该文字的字符集,比如英文字符集。一组有共同特征的字符也可以组成字符集,比如繁体汉字字符集、日文汉字字符集。字符集的...
  • 位、字节、编码格式

    千次阅读 2018-02-16 16:25:09
    字节(Byte):存储空间基本计量单位,8个二进制构成一个字节编码格式:ASCII:127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号Unicode:把所有语言都统一到一套编码里,解决乱码问题UTF-8:...
  • 字符编码总结

    2015-07-05 21:39:18
    二进制:计算机内部使用电平高低2种状态(01)存储信息,即2进制计数。 字节:计算机一个存储单位,由8位01码组成。 ASCII:美国用一个字节表示英语文字符号一套编码规则。如,78是N。ascii是编码的鼻祖。 ...
  • 单个符号的不同状态可以代表不同信息,多种符号不同状态的组合就构成了我们的语言世界。计算机起源于美国,系统中使用的符号都是以英语字母为基础构造的。这就造成了使用英语作为主要语言的地区,使用计算机特别方便...
  • 编码的本质就是让只认识0和1的计算机,能够理解我们人类使用的语言符号,并且将数据转换为二进制进行存储和传输。这种从人类语言到计算机语言转换的形式,就叫做编码表,它让人类语言和计算机语言能够一一对应起来。...
  • 字符集和字符编码

    2014-11-28 15:00:00
    字符集(Charset):一组抽象字符集合字符(Character)...字符编码(Encoding):计算机要处理各种字符,字符编码将字符和二进制内码对应起来制定编码首先要确定字符集,并将字符集内字符排序,然后和二进制数字对应...
  • 乱码这种东西,时不时出现。本来开开心心想着我要学习啦...我们可爱的计算机只能识别计算机语言,它以二进制字节形式来存储数据,就是0和1构成的一个长长的二进制字节(一般人是识别不了这种这么原始的语言的) 而作...
  • 汇编语言学习总结一

    2019-10-10 18:11:24
    机器语言是机器指令的集合,是由0和1构成的二进制代码。 那什么是机器指令?机器指令是计算机CPU执行某种操作的命令编码。指令系统是指某一类型CPU中所有机器指令的集合。8086/8088CPU的指令系统共包含92种基本指令...

空空如也

空空如也

1 2 3 4 5
收藏数 96
精华内容 38
关键字:

二进制编码构成的语言是