女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【教程分享】FPGA零基礎學習:數字電路中的數字表示

電子發燒友論壇 ? 來源:未知 ? 2023-04-11 10:30 ? 次閱讀

大俠好,歡迎來到FPGA技術江湖。本次帶來FPGA系統性學習系列,本系列將帶來FPGA的系統性學習,從最基本的數字電路基礎開始,最詳細操作步驟,最直白的言語描述,手把手的“傻瓜式”講解,讓電子、信息、通信類專業學生、初入職場小白及打算進階提升的職業開發者都可以有系統性學習的機會。

系統性的掌握技術開發以及相關要求,對個人就業以及職業發展都有著潛在的幫助,希望對大家有所幫助。后續會陸續更新 Xilinx 的 Vivado、ISE 及相關操作軟件的開發的相關內容,學習FPGA設計方法及設計思想的同時,實操結合各類操作軟件,會讓你在技術學習道路上無比的順暢,告別技術學習小BUG卡破腦殼,告別目前忽悠性的培訓誘導,真正的去學習去實戰應用,這種快樂試試你就會懂的。話不多說,上貨。

數字電路中的數字表示

在我們的生活中,常用的是十進制數字,有0、1、2、3、4、5、6、7、8、9十個數字。我們用這不同的十個數字可以表示不同的十種情況,但是很多情況下,會現在超過10種情況,那我們應該怎么表示呢?例:有很多(遠遠多于10個)的房間需要貼門牌號,我們可以從0開始貼,逐漸增加,在我們貼到第10個(9號)后,后面一個我們應該怎么辦?

數字信號通常都是用數碼來表示的,不同的數碼可以表示數量的不同大小。用數碼表示數量的時候,僅僅用一個數碼往往不夠,因此需要用進位計數制的方法組成多位數碼使用。我們把多位數碼中每一位的構成方法以及從低位到高位的進位規則稱為數制。

當用數碼表示大小時,它們之間可以進行數量間的加、減、乘、除等算數運算。

下面討論十進制

十進制是生活中最常使用的進位計數制(可能是人都有十個手指頭,十個腳趾頭,所以古人創立了十進制),十進制的有0~9十個數碼,計數的基數是10。超過9的數必須要用多位數來表示。

例:任何的十進制數字都可以寫成本位的數字乘以本位的權重的累加和。十進制的數字一般用“D”來標注。

在日常生活中,我們都是十進制來表示大小,多少等等。十進制有自己的運算規則。例:有五個抽屜,每個抽屜有五塊糖,一共有多少塊糖?現在我們討論的是數字電路基礎,那么在電路中還適合使用十進制數嗎?

在第一章中,我們已經給出答案,用的是“0” 和“1”兩個數碼。那么我們按照十進制的規律類推一下二進制。

二進制有0和1兩個數碼,計數的基數是2。超過1的數必須要用多位數來表示。二進制一般用“B”來標注。

例:通過對二進制的本位數字乘以本位的權重的累加和,我們可以算出二進制的101.01,就是我們十進制的5.25。

通過上述的方法,我們確定了二進制換算到十進制的方法。那么十進制的數字換算到二進制的方法如下:

例:將十進制的173化為二進制數字的方法如下:

b638b308-d810-11ed-bfe3-dac502259ad0.png

圖1 :十進制173換算二進制的過程


將上述的余數倒著寫下來10101101就是我們想要的結果。

通過講解十進制和二進制,我們應該了解,描述同樣一個物體的大小,我們可以用兩種不同的方法,但是本質上還是相等的。只是描述的方法不一樣而已。

同理,我們可以定義出八進制、十六進制。

八進制使用數碼0~7來表示,一般用字母“O”來標注;十六進制使用數碼0~9和A~F來表示,一般用字母“H”來標注。它們與十進制的換算關系與二進制相同。

下面我們研究八進制與二進制之間的換算關系

對于八進制來說,它的權重是8的n次冪,也可以表示成權重是2的3n次冪。八進制的數碼為0~7,0~7的數碼用二進制表示可以寫成:K=。如果此時的權重是8的n次冪(2的3n次冪),那么此位的數碼乘以權重(K*8的n次冪),用二進制表示就是:。按照二進制的規則,正好是連續三個數碼。所以八進制轉換二進制的方法如下:

將一個八進制轉換為三個二進制排列即可(必須熟悉0到7對應的二進制碼)。

例:八進制的253,轉換二進制為010 101 011。

二進制轉八進制的方法如下:

從權重為1開始,向左(整數向左,小數向右)三個一組,最左或者最右不夠三位時,用零補充,轉成八進制即可。

例 :二進制1010110.01,分組001 010 110 . 010–> 126.2

十六進制與二進制之間的轉換是四個一組(必須熟悉0到9和A到F所對應的二進制碼),和八進制是類似的,不在多余描述。

b66a97b0-d810-11ed-bfe3-dac502259ad0.png

圖2 :二進制、八進制、十進制、十六進制前16個數碼的對應表


思考:為什么在上述圖表中,二進制直接用四個數碼來表示,八進制直接用兩個數碼來表示?

四個二進制的數碼或者兩個八進制的數碼才可以表示到十進制的15。

在電路中,這些數碼都是要存放的,每一個數碼都需要一個小存儲空間。當存儲空間的個數是固定的時候,所表示的數字的大小也就有了范圍。例:只考慮整數的情況下,三個數碼的十進制表示000~999。

后續設計時,如果我們出現設計失誤,將四個數碼存放到三個存儲空間里時,就會出現錯誤(綜合器不一定報錯),最終結果為將后面的三個數碼存放到三個存儲空間里了,最高位的那個數碼丟掉了,一定要注意。不要在設計中看到某一個變量賦值為N,就一直以為這個變量為N,不一定,一定觀察變量的存儲空間的個數和N所需要的個數的對比。

思考:在電路中,數字N需要幾個存儲空間?

根據上一個問題的思考,一個存儲空間只能存放一個數碼,那就需要看數字N有多少個數碼了。這樣的想法是正確的嗎?注意:在電路中,都是二進制表示。那么也就是數字N需要的存儲空間的個數,應該是N轉換成為二進制時,他的數碼的個數。

例:十進制的25,首先轉換成為二進制11001,所以需要5個存儲空間。

思考:在設計電路時,需要把所有的數字都寫成二進制嗎?

目前設計大多數是寫代碼,代碼想要形成電路,需要綜合器的綜合。而綜合器是可以把任何進制的數字轉換成為二進制的。注意:存儲空間的問題。

思考:在賦值時,兩個變量賦值的進制不相同,可以直接對比大小嗎?

例 :在電路中變量A賦值十進制的25,變量B賦值十六進制的24,假設變量A和B的存儲空間的個數可以放下本身賦值的數字,可以直接對比嗎?答案是肯定的,我們經常說的進制不同不能相對比,那是對于人類自己看見的而言,但是對于設計來說,我們的賦值是在代碼級別,距離真正的電路還有一個綜合器的綜合,綜合器綜合過后,所有的進制都是二進制,那就可以直接對比了。

BCD碼(nary-Coded Decimal?)又稱二-十進制代碼,亦稱二進碼十進數。是一種二進制的數字編碼形式,用二進制編碼的十進制代碼。這種編碼形式利用了四個位元來儲存一個十進制的數碼。利用四位二進制表示十進制數的個位或者十位等。

二進制碼的10110,表示十進制的22,利用BCD碼表示則為0010 0010。

在計算中會經常遇到負數,那么在數字電路中,怎么樣來表示負數呢?

首先要認識到,無論是正數還是負數,都是人類賦予它的意義。同樣的數字,在對他用不同的眼光來看待時,也會得到不同的結果。例:101,在十進制中它就是一百零一,如果用二進制來看,這就是十進制中的五。

當一個變量為無符號位時,就認為這個變量是正數,所有位按照自己的權重進行計算。如果一個變量為有符號位時,那么規定他的最高位為符號位(0:正數。1:負數),其他位用來表示數值。

下面討論有符號數的表示。0011表示正三,1011表示負三,這樣的表示方法對嗎?首先表示方法沒有對錯之說,只是符合不符合場合。

這個表示方法是不符合當代計算機中的表示方法的。在當代計算機中,不僅僅要描述數的表示,還要表示運算。很明顯這兩個數字相加不為0。

那應該如何表示負數呢?如果在只有四位的二進制,四位二進制可以表示16種狀態,無符號數可以表示0到15,15+1=0,0-1=15,這兩個算式是正確的。

b6730d5a-d810-11ed-bfe3-dac502259ad0.png

圖3 :四位二進制補碼運算的例子

補碼就是順時針方向的長度。

符號和絕對值拼接到一起組成的碼成為原碼。

表示正數時,補碼和原碼是相同的;表示負數時,補碼和原碼不相同,兩個絕對值相加應該為“一圈”。

二進制的位數和能夠表示的有符號數的范圍也是有關系的。例:四位二進制能夠表示16種狀態,它能夠表示的范圍[-8:7]。并不是負數比正數多一個,中間有一個0。

原碼能夠直觀的看出大小,補碼比較方便有符號位計算。在當代數字電路中,都是利用補碼進行存儲和運算的。

表示范圍為-200到200,至少需要多少位二進制碼才能表示?

-200到200一共有401種情況,需要9位來表示。9位的二進制表示有符號數時,能夠表示-256到+255。

擴展符號位不改變數字大小

正數不在敘述。對于負數來說,就是在前面加了一個“1”,是否會改變數字大小呢?補碼計算原碼的規則為:補碼減1,符號位不變,其他位取反。而我們添加的“1”,正好在“其他位取反”中,無論擴展多少位,都不會改變數字大小的。

在電路中大多數都是二進制的信息,那我們如何能夠看得到漢字或者字母呢?對于字母來說,我們來介紹一下ASCII碼。

ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單字節編碼系統,并等同于國際標準ISO/IEC 646。

b6875486-d810-11ed-bfe3-dac502259ad0.png

圖4 :部分ASCII碼對照表


漢字國標碼,創建于1980年,目的為了使每個漢字有一個全國統一的代碼而頒布了漢字編碼的國家標準。每個漢字有個二進制編碼,叫漢字國標碼。在我國漢字代碼標準GB2312-80中有6763個常用漢字規定了二進制編碼。具體國標碼的信息就不在敘述,有興趣的讀者可以自行查詢。

“ABC”字母序列在計算機中存儲的形式按照ASCII碼存儲,十六進制的“41、42、43”。“郝旭帥”漢字序列在計算機中存儲的形式按照漢字國標碼存儲,十六進制的“BA、C2、D0、F1、CB、A7”。

上述敘述的幾種計數或者表示規則,都是非常常用的幾種。在某些特殊的場合我們也可以自己編寫規則,類似于24進制數,用5個二進制表示一個24進制數中的數字,都是可以的。

在數字電路中,只要是發送方和接收方能夠統一好編碼規則,就是可以的。

如果在數字電路中表示小數?方法有定點數和浮點數(浮點數不做介紹)。

定點數

定點格式,即約定電路中所有數據的小數點位置是固定不變的。

對于整數而言,小數點默認位置在最后一位的后面。例:二進制的101表示十進制的5,小數點的位置就在101的后面。

如果是有小數呢?那如何來表示呢?例:十進制的5.5。

有小數時,就不能夠把點放在最后一位的后面了,因為要存放小數,所以點必須在中間。當用8位來表示時,規定四位表示整數,四位表示小數:0101.1000,小數點并不是真實存在的,只是我們規定的而已。

也可以有另外一種理解,整數用的基礎值是2的0次冪,所以所有的整數直接編寫即可。如果有小數的話,基礎值就要有所變化,假如是2的-3次冪。那么表示十進制的5時,就會變為101000。

定點、定點就是定好了小數點的位置,也就是定好基礎值。

浮點數即小數點的位置可以浮動,利用專門的幾個數碼確定小數點的位置。這里不做過多介紹,有興趣的讀者,可以自行查閱相關資料。


b6b1c7a2-d810-11ed-bfe3-dac502259ad0.png

b6c2393e-d810-11ed-bfe3-dac502259ad0.png

聲明本文由電子發燒友社區發布,轉載請注明以上來源。如需社區合作及入群交流,請添加微信EEFans0806,或者發郵箱[email protected]

更多熱點文章閱讀

  • 龍芯架構首款面向嵌入式應用的開發板,2K500開發應用實例

  • 基于32位RISC-V設計的互聯型微控制器,沁恒微CH32V307開發樣例

  • RK3568!四核64位ARMv8.2A架構,匯聚編譯源碼及實戰樣例

  • 尺寸僅有21mm*51mm,板邊采用郵票孔設計,合宙 Air105 核心板開發總結

  • 24Bit ADC高精度低功耗MCU 醫療級別設備參考設計(附上高精確算法+電路原理圖)


原文標題:【教程分享】FPGA零基礎學習:數字電路中的數字表示

文章出處:【微信公眾號:電子發燒友論壇】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴

原文標題:【教程分享】FPGA零基礎學習:數字電路中的數字表示

文章出處:【微信號:gh_9b9470648b3c,微信公眾號:電子發燒友論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    數字電路—24、計數器

    數字電路,能夠記憶輸入脈沖個數的電路稱為計數器
    發表于 03-26 15:13

    數字電路—23、寄存器

    數字電路,用來存放二進制數據或代碼的電路稱為寄存器。
    發表于 03-26 15:11

    數字電路設計:前端與后端的差異解析

    本文介紹了數字電路設計“前端”和“后端”的區別。 數字電路設計“前端”和“后端”整個過程可類比蓋一棟大樓:前端好比建筑師在圖紙上進行功能和布局的抽象設計,后端則是工程隊把圖紙變成實
    的頭像 發表于 02-12 10:09 ?437次閱讀

    數字電路有哪些特點和作用

    上均呈現離散狀態,僅用有限個離散值來表示信息,其中以二進制的 0 和 1 最為常見。這種離散特性為數字電路帶來諸多優勢。一方面,它極大地簡化了信息的處理過程。相較于模擬信號那種連續變化、需要精確跟蹤每一個細微幅度變化
    的頭像 發表于 02-04 17:17 ?683次閱讀

    數字電路與控制系統關系

    在現代技術領域,數字電路和控制系統是兩個不可或缺的組成部分。數字電路作為電子技術的基礎,為控制系統提供了必要的硬件支持。而控制系統則是利用這些硬件來實現對各種機械設備或過程的精確控制。 數字電路
    的頭像 發表于 01-24 09:43 ?489次閱讀

    數字電路在嵌入式系統的應用

    和可靠性。 數字電路的基本概念 數字電路是由邏輯門、觸發器、計數器等基本數字元件構成的電路,它們處理的是離散的數字信號,即二進制信號。這些信
    的頭像 發表于 01-24 09:41 ?499次閱讀

    數字電路編程語言介紹

    文本形式描述電路的行為和結構。 并行性和并發性 :數字電路編程語言支持并行和并發操作的描述,這是數字電路設計的基本特性。 模塊化 :這些語言支持模塊化設計,允許設計師將復雜的
    的頭像 發表于 01-24 09:39 ?603次閱讀

    數字電路與模擬電路的區別

    可以是電壓、電流或任何其他物理量,它們隨時間連續變化。模擬電路的信號通常不進行量化,這意味著它們可以取任意值。模擬電路的例子包括放大器、濾波器和振蕩器等。 1.2 數字電路 與模擬
    的頭像 發表于 01-24 09:36 ?1006次閱讀

    模擬電路數字電路的區別

    在現代電子技術,模擬電路數字電路是兩種截然不同的電路類型,它們各自有著獨特的特點和應用場景。 一、信號處理方式 模擬電路: 模擬
    的頭像 發表于 01-24 09:22 ?799次閱讀

    卡諾圖在數字電路的應用

    卡諾圖(Karnaugh map,簡稱K-map)在數字電路具有廣泛的應用,它主要用于布爾代數表達式的簡化和最小化,從而優化數字電路的設計。以下是卡諾圖在數字電路
    的頭像 發表于 01-14 17:08 ?1179次閱讀

    BJT在數字電路的應用

    數字電路設計,BJT因其獨特的電氣特性和成本效益而被廣泛使用。BJT可以作為開關使用,控制電流的流動,從而實現邏輯功能。 1. BJT作為開關 在數字電路,BJT最常見的應用之一
    的頭像 發表于 12-31 16:34 ?925次閱讀

    邏輯異或在數字電路的作用

    邏輯異或(Exclusive OR,簡稱XOR)在數字電路扮演著至關重要的角色。以下是邏輯異或在數字電路的幾個主要作用: 一、實現基本邏輯功能 異或門(Exclusive OR G
    的頭像 發表于 11-19 09:44 ?1525次閱讀

    數字電路可以處理模擬信號嗎

    數字電路主要處理數字信號,即離散的、二進制的信號。然而,在某些情況下,數字電路也可以處理模擬信號,即連續的、非二進制的信號。 數字電路與模擬信號
    的頭像 發表于 08-11 11:08 ?1038次閱讀

    數字電路是對什么信號進行傳輸的

    數字電路是一種電子系統,它使用數字信號進行信息傳輸和處理。數字信號是由離散的電壓水平或電流水平表示的信號,通常用二進制代碼表示。與模擬
    的頭像 發表于 08-11 11:00 ?1333次閱讀

    數字電路晶體管大多處于什么狀態

    數字電路,晶體管大多處于飽和或截止狀態。這是因為數字電路的信號只有兩種狀態:高電平和低電平,分別對應晶體管的導通和截止狀態。本文將介紹數字電路
    的頭像 發表于 07-18 15:25 ?1485次閱讀