導航:首頁 > 電器電路 > 進位鏈電路

進位鏈電路

發布時間:2022-07-22 00:27:52

Ⅰ 基於FPGA的可編程定時器/計數器8253的設計與實現

基於FPGA的可編程定時器/計數器8253的設計與實現
摘??? 要:本文介紹了可編程定時器/計數器8253的基本功能,以及一種用VHDL語言設計可編程定時器/計數器8253的方法,詳述了其原理和設計思想,並利用Altera公司的FPGA器件ACEX 1K予以實現。
關鍵詞:FPGA;IP;VHDL

引言
在工程上及控制系統中,常常要求有一些實時時鍾,以實現定時或延時控制,如定時中斷,定時檢測,定時掃描等,還要求有計數器能對外部事件計數。要實現定時或延時控制,有三種主要方法:軟體定時、不可編程的硬體定時、可編程的硬體定時器。其中可編程定時器電路的定時值及其范圍可以很容易地由軟體來確定和改變,功能較強,使用靈活。Intel的定時器/計數器為可編程定時器PIT,型號為8253,改進型為8254,就是為完成上述功能而設計出來的一種電路。
隨著ASIC的發展,在實際工程中通用的8253PIT晶元表現出如下的不足:1. 計數頻率不夠,8253計數速率最高2MHz,即使是其改進型8254也往往不能滿足一些需要較高計數頻率的工程。2. 8253PIT沒有復位信號,輸出的初始狀態不受控制。針對8253的這些局限性,在實際工程中往往需要重新設計8253,並把8253的部分功能作為一個獨立的IP模塊嵌入到設計中,以實現完成某種特定功能的ASIC。

8253的基本功能和內部結構
主要功能
* 每片內部包含有3個獨立的16位計數通道;
* 每個計數器都可以按照二進制或二—十進制計數;
* 每個計數器的計數速率可高達2MHz;
* 每個計數通道有6種工作方式,可由程序設置和改變;
* 所有的輸入/輸出電平信號都與TTL兼容。
內部結構
8253的內部結構如圖1所示。
1. 數據匯流排緩沖器。這是8253與CPU數據匯流排連接的8位雙向三態緩沖器,CPU通過數據匯流排緩沖器將控制命令字和計數初值寫入8253晶元,或者從8253計數器中讀取當前計數值。
2. 讀/寫邏輯。這是8253內部操作的控制部分。首先有片選信號CS的控制部分,當CS為高時,數據匯流排緩沖器處在三態,系統的數據匯流排脫開,故不能進行編程,也不能進行讀寫操作。其次,由這部分選擇讀寫操作的埠(3個計數器及控制字寄存器),並控制數據傳送的方向。
3. 控制字寄存器。在8253初始化編程時,由CPU寫入控制字以決定通道的工作方式。此寄存器只能寫入而不能讀出。實際上,8253的3個計數器通道都有各自的控制字寄存器,存放各自的控制字,初始化編程時,這3個控制字分三次共用一個控制埠地址寫入各自的通道.它們是利用最高兩位的狀態不同來區分的。
4. 計數器通道。包括計數器0、計數器1、計數器2。它們的結構完全相同,彼此可以按照不同的方式獨立工作。每個通道包括:一個8位的控制寄存器;一個16位的計數初值寄存器;一個計數執行部件,他是一個16位的減法計數器;一個16位的輸出鎖存器。
每個通道都對輸入脈沖CLK按二進制或二—十進制,從預置值開始減1計數。當預置值減到零時,從OUT輸出端輸出一信號。計數過程中,計數器受到門控信號GATE的控制。

8253的設計
根據8253的內部結構,設計8253主要分為兩大部分:匯流排控制部分和定時/計數部分。
匯流排控制部分設計
這一部分主要完成數據的讀/寫,以及控制字的寫入。用VHDL設計這部分前,應該了解8253的埠選擇(見表1)和控制字(見圖2)。
設計的關鍵在於對8253埠控制字的掌握。寫信號到來時,首先要判斷是控制字還是計數初始值。如果是初始值,其中先寫低位元組,再寫高位元組部分是重點,需要一個信號來判斷寫入的是新數據還是上一數據沒寫完的高位元組部分.其他計數器的讀/寫大同小異。只要對8253的埠控制字了解清楚以及對讀/寫的時序有一定的了解,這一部分的邏輯很容易用VHDL語言描述出來.該進程可對外發出控制信號,表示控制字及數據寫入完畢,可以進行計數器的計數操作了。該控制信號可以作為下面介紹的計數部分的觸發信號。
計數器部分設計
8253有3個獨立的計數器,每個計數器有6種工作模式,完成不同的功能。現以方式4為例介紹VHDL設計,其他的可以在方式4基礎上加以修改。
這種工作方式,當寫入控制字後輸出為高。當寫入計數值後,再過一個時鍾周期,計數執行部件獲得計數初值,並開始減1計數。當計數到0後輸出變低電平,此低電平一直維持一個時鍾周期,然後又自動變為高電平,並一直維持高電平,計數器停止計數。這種方式計數是一次性的,只有輸入新的計數值之後,才能開始新的計數。
下面介紹方式4的設計過程:
CPU寫入控制字後,輸出outs立即復位,方式4中復位後outs為高電平。CPU寫入計數初值的下一個CLK脈沖,計數初值被送到計數執行部件並開始減1計數,又經過N個時鍾周期後才輸出一個負脈沖。當GATE=1時,允許計數,GATE=0時,禁止計數。這樣就實現了方式4基本的軟體觸發功能。
if clk1'event and clk1='0' then ——時鍾脈沖下降沿到來
if gate1='1' then ——門控位為1,允許計數
if ce1>"0000000000000001" then
ce1<=ce1-1;
——減1計數,ce為計數執行部件
elsif ce1="0000000000000001" then
out1<='0'; ——初值減到1時輸出低電平
???? ce1<=ce1-1; ——繼續減1
elsif ce1="0000000000000000" then
out1<='1'; ——初值減到0時輸出高電平
??? end if;
?? elsif gate1='0' then
——門控位為0,禁止計數
??? null;
?? end if;
? end if;
上面的小程序雖不完整但是卻描述出了方式4的軟體觸發基本功能。若在計數過程中改變計數值,新值寫入後的下一個CLK周期時,此計數值被寫入計數執行部件並從新的計數值開始計數.如果寫入的計數值是兩個位元組,那麼寫入第一個位元組時計數不受影響,寫入第二個位元組後的下一個時鍾周期,計數執行部件獲得新值,並從新值開始重新計數,叫做軟體再觸發.軟體再觸發功能只要在上面的程序中加入相應的判斷信號和控制信號即可實現。
完整的8253寫過程流程
實際上完整的8253就是一個擁有多個進程的復雜結構體。讀匯流排過程、寫匯流排過程、每個計數器的6種工作方式都是一個獨立的進程.進程之間是並行的,只要進程的敏感信號發生變化,該進程就被觸發一次,而進程內部是按照時序順序執行的。以寫過程為例,寫匯流排進程本身是靠敏感信號wr和cs來觸發的,無論寫入控制字還是寫入計數初值後,寫匯流排進程都會對外發出信號以表示某個計數器的控制字寫入完畢或者某個計數器的某個工作方式的計數初值已經寫入,可以進行計數了。而這些信號又相應的作為其他進程的敏感信號,進程之間的通信就是依靠這些信號來完成的。這些進程之間都是並發執行的,具體哪個進程被執行取決於控制字。圖3給出了寫過程的流程,讀過程與之類似。

設計結果驗證
本設計開發軟體採用Altera公司的集成開發軟體MAX+PLUS II 10.2完成。並用該公司的ACEX 1K系列FPGA晶元予以驗證。
之所以選用ACEX 1K系列晶元,是因為它是一種低成本高密度的FPGA晶元系列,是首選的中規模器件產品。它具有如下特點:
* ACEX 1K採用查找表(LUT)和EAB(嵌入式陣列塊)相結合的結構,特別適用於實現復雜邏輯功能存儲器功能,例如通信中應用的數字信號處理、多通道數據處理、數據傳遞和微控制等。
* 典型門數為1萬到10萬門,有多達49152位的RAM(每個EAB有4096位RAM)。
* 器件內核採用2.5V電壓,功耗低,能夠提供高達250MHz的雙向I/O功能,完全支持33MHz和66MHz的PCI局部匯流排標准。
* 具有快速連續式、延時可預測的快速通道互連;具有實現快速加法器、計數器、乘法器和比較器等算術功能的專用進位鏈,以及實現高速多扇入邏輯功能的專用級連接。
通過模擬、綜合,並下載到FPGA中進行驗證,本設計可以很好地實現其功能。■

參考文獻
1 曾繁泰,陳美金. VHDL程序設計
2 林明權. VHDL數字控制系統設計範例

Ⅱ 簡述SRAM,DRAM型存儲器的工作原理

個人電腦的主要結構:
顯示器
主機板
CPU
(微處理器)
主要儲存器
(記憶體)
擴充卡
電源供應器
光碟機
次要儲存器
(硬碟)
鍵盤
滑鼠
盡管計算機技術自20世紀40年代第一台電子通用計算機誕生以來以來有了令人目眩的飛速發展,但是今天計算機仍然基本上採用的是存儲程序結構,即馮·諾伊曼結構。這個結構實現了實用化的通用計算機。
存儲程序結構間將一台計算機描述成四個主要部分:算術邏輯單元(ALU),控制電路,存儲器,以及輸入輸出設備(I/O)。這些部件通過一組一組的排線連接(特別地,當一組線被用於多種不同意圖的數據傳輸時又被稱為匯流排),並且由一個時鍾來驅動(當然某些其他事件也可能驅動控制電路)。
概念上講,一部計算機的存儲器可以被視為一組「細胞」單元。每一個「細胞」都有一個編號,稱為地址;又都可以存儲一個較小的定長信息。這個信息既可以是指令(告訴計算機去做什麼),也可以是數據(指令的處理對象)。原則上,每一個「細胞」都是可以存儲二者之任一的。
算術邏輯單元(ALU)可以被稱作計算機的大腦。它可以做兩類運算:第一類是算術運算,比如對兩個數字進行加減法。算術運算部件的功能在ALU中是十分有限的,事實上,一些ALU根本不支持電路級的乘法和除法運算(由是使用者只能通過編程進行乘除法運算)。第二類是比較運算,即給定兩個數,ALU對其進行比較以確定哪個更大一些。
輸入輸出系統是計算機從外部世界接收信息和向外部世界反饋運算結果的手段。對於一台標準的個人電腦,輸入設備主要有鍵盤和滑鼠,輸出設備則是顯示器,列印機以及其他許多後文將要討論的可連接到計算機上的I/O設備。
控制系統將以上計算機各部分聯系起來。它的功能是從存儲器和輸入輸出設備中讀取指令和數據,對指令進行解碼,並向ALU交付符合指令要求的正確輸入,告知ALU對這些數據做那些運算並將結果數據返回到何處。控制系統中一個重要組件就是一個用來保持跟蹤當前指令所在地址的計數器。通常這個計數器隨著指令的執行而累加,但有時如果指令指示進行跳轉則不依此規則。
20世紀80年代以來ALU和控制單元(二者合成中央處理器,CPU)逐漸被整合到一塊集成電路上,稱作微處理器。這類計算機的工作模式十分直觀:在一個時鍾周期內,計算機先從存儲器中獲取指令和數據,然後執行指令,存儲數據,再獲取下一條指令。這個過程被反復執行,直至得到一個終止指令。
由控制器解釋,運算器執行的指令集是一個精心定義的數目十分有限的簡單指令集合。一般可以分為四類:1)、數據移動(如:將一個數值從存儲單元A拷貝到存儲單元B)2)、數邏運算(如:計算存儲單元A與存儲單元B之和,結果返回存儲單元C)3)、條件驗證(如:如果存儲單元A內數值為100,則下一條指令地址為存儲單元F)4)、指令序列改易(如:下一條指令地址為存儲單元F)
指令如同數據一樣在計算機內部是以二進制來表示的。比如說,10110000就是一條Intel
x86系列微處理器的拷貝指令代碼。某一個計算機所支持的指令集就是該計算機的機器語言。因此,使用流行的機器語言將會使既成軟體在一台新計算機上運行得更加容易。所以對於那些機型商業化軟體開發的人來說,它們通常只會關注一種或幾種不同的機器語言。
更加強大的小型計算機,大型計算機和伺服器可能會與上述計算機有所不同。它們通常將任務分擔給不同的CPU來執行。今天,微處理器和多核個人電腦也在朝這個方向發展。
超級計算機通常有著與基本的存儲程序計算機顯著區別的體系結構。它們通常由者數以千計的CPU,不過這些設計似乎只對特定任務有用。在各種計算機中,還有一些微控制器採用令程序和數據分離的哈佛架構(Harvard
architecture)。

Ⅲ 關於quartus設計分頻電路的問題

「整個程序下載到硬體上時,輸出的卻不是1Hz」
是指模擬不對,還是指實際示波器測的波形不對?
如果如果模擬是對的,實際結果不對,那就是分頻的太厲害了畢竟是從48M到1HZ的分頻啊。也可以試試PLL,並進行時序的約束。如果模擬就不對,那就要另找原因了。歡迎追問~~

Ⅳ fpga實現tdc,怎麼實現啊

1.首先在FPGA裡面實現TDC有兩個基本的工作,即選擇合適的FPGA和選取合適的演算法。
就FPGA來講,我經驗也不豐富,只是知道Xilinx公司的Vertex系列FPGA能夠滿足做高精度TDC的要求。其中專用進位鏈的單元延時在40ps左右,可用作延時單元。
2.TDC的演算法的話,最簡單的就是延遲線內插法,就是以單元延時作為時間的最小度量單位的方法。
3.選取了這兩個方面之後,就可以通過HDL(硬體描述語言,如VerilogHDL或者VHDL)來描述實現簡單的TDC模塊了。
4.具體的細節問題可能比較多一些,但是大概思路就是這樣。

Ⅳ 先行進位

進位鏈是傳遞進位的邏輯電路。先行進位即高位進位和低位進位同時產生的進位。先行進位有兩種,一種是組內並行,組間串列進位鏈,另一種是組內並行,組間並行進位鏈,又稱並行進位。

Ⅵ 簡述CPU控制器的主要功能

控制器用於控制著整個CPU的工作。

控制器是計算機的神經中樞,主要的功能是指揮全機各個部件自動、協調地工作。主要的部件有:指令寄存器、解碼器、時序節拍發生器、操作控制部件和指令計數器。

由於I/O設備的速率較低而CPU和內存的速率卻很高,故在控制器中必須設置一緩沖器。在輸出時,用此緩沖器暫存由主機高速傳來的數據,然後才以I/O設備所具有的速率將緩沖器中的數據傳送給I/O設備。

在輸入時,緩沖器則用於暫存從I/O設備送來的數據,待接收到一批數據後,再將緩沖器中的數據高速地傳送給主機。

(6)進位鏈電路擴展閱讀:

CPU可以向控制器發送多種不同的命令,設備控制器應能接收並識別這些命令。為此,在控制器中應具有相應的控制寄存器,用來存放接收的命令和參數,並對所接收的命令進行解碼。

例如,磁碟控制器可以接收CPU發來的Read、Write、Format等15條不同的命令,而且有些命令還帶有參數;相應地,在磁碟控制器中有多個寄存器和命令解碼器等。

就像內存中的每一個單元都有一個地址一樣,系統中的每一個設備也都有一個地址,而設備控制器又必須能夠識別它所控制的每個設備的地址。此外,為使CPU能向(或從)寄存器中寫入(或讀出)數據,這些寄存器都應具有唯一的地址。

Ⅶ 關於計算機組成原理的一些問題

哎,800萬年前做過的題目,現在也忘記得差不多了,再說才40分,心有餘而力不足啊!何況這些題目都差不多達到變態級別了,不好意思了!

Ⅷ 設計一個加法器

一、半加器
半加器是用於計算2個一個bit的二進制數a與b的和,輸出結果是sum(s)和進位carry(c)。在多bit數的計算中,進位c將作為下一相鄰bit的加法運算中。單個半加器的計算結果是2c+s。 真值表:
邏輯表達式:
Verilog描述為:
mole half_adder(
input a,
input b,
output c,
output s
);
assign c = a&b;
assign s = a^b;
endmole
電路圖如下:
二、全加器
全加器不同於半加器是,全加器帶有進位cin。輸入為a,b,cin,輸出為sum(s),進位carry(c),均是單bit信號。 s為a、b、cin三個單bit數的和,cout為a,b,cin三個數超過2後的進位。 真值表
邏輯表達式:
verilog描述:
mole full_add(
input a,
input b,
input cin,
output cout,
output s
);
assign s = a^b^cin;
assign cout = a&b | (cin & (a^b));
endmole
電路圖:
表示符號:
三、行波進位加法器
N-bit加法器可以根據1-bit全加器組合而成。每個全加器的輸出進位cout作為下一個全加器的輸入進位cin,這種加法器稱為行波進位加法器(Ripple-carry addr,簡稱RCA),如一個16bit加法器的結構如下所示,其中A、B為16bit的加數,S為A+B的和,c16為該加法器的輸出:
由上圖所知可以得到進位c16的結果依賴於c15,c14,c13,…c2,c1,c0,對於32bit,64bit等加法器,進位鏈將顯得更加長。所以,行波進位加法器設計簡單,只需要級聯全加器即可,但它的缺點在於超長的進位鏈,限制了加法器的性能。
mole rca #(width=16)(
input [width-1:0] A,
input [width-1:0] B,
output [width-1:0] sum,
output cout
);
wire [width:0] temp;
assign temp[0] = 0;

genvar i;
for(i=0;i<width;i=i

Ⅸ NCO的運算公式

Walther JS於1971年提出了統一的CORDIC形式。假定初始向量V1(x1 ,y1)旋轉角度θ後得到向量V2(x2,y2):
即:
若每次旋轉的角度θ是正切值為2 的倍數,即θi=arctan(2-i),則cosθi=(1+2-2i)-1/2 。假設以δi代表矢量的旋轉方向,+1表示逆時針旋轉,-1表示順時針旋轉,故第i 步旋轉可用下式表示:
其中:(1+2-2i)-1/2為模校正因子。對於字長一定的運算,該因子是一個常數,用K表示,以16 bits字長為例,則:
可見,迭代運算不能使幅值比例因子恆為1。為了抵消因迭代產生的比例因子的影響,可將輸入數據X,Y校正後再參與運算,以避免在迭代運算中增加校正運算,降低CORDIC演算法的速度。由此運算迭代式可以簡化成:
公式(5)運算僅通過加法器及移位器就可以實現。此外,若用Zi表示第i次旋轉時與目標角度之差, 則:
經過n次旋轉後,式(5)的n次迭代可以得到以下結果:
本文介紹的數控振盪器的設計是在式(7)的基礎上,給定x0=K ,y0=0,則迭代結果為:
將所需產生的角度值作為z0輸入,通過式(5)、(6)的迭代運算,迭代結果輸出的xn和yn就是所需要的三角函數值。
數控振盪器的FPGA實現

圖1是數控振盪器的頂層電路。由圖可見,頻率控制字寄存器將接收到的的頻率控制字送入相位累加器,相位累加器對系統時鍾進行計數,每到達輸入頻率控制字的值即對相位進行累加,隨後將累加值送入相位相加器,與相位控制字寄存器接收到的初始相位進行相加,得到當前的相位值。其中,相位累加器是決定NCO性能的一個關鍵模塊,可以利用FPGA器件的進位鏈實現快速、高效的電路結構。然而,由於進位鏈必須位於臨近的邏輯陣列塊CLB和邏輯單元LC內,所以長的進位鏈會減少其它邏輯使用的布線資源;同時,過長的進位鏈也會制約整個系統速度的提高。因此,設計中採用進位鏈和流水線技術相結合的辦法。所謂流水線技術,即把在一個時鍾內要完成的邏輯操作分成幾步較小的操作,並插入幾個時鍾周期來提高系統的數據吞吐率。採用以上做法實現的相位累加器既能保證具有較高的資源利用率,又能大幅提高系統的性能和速度。
經過上述相位的處理之後,即可獲得具有所設定初始相位的一定頻率的正餘弦相位序列,將此序列送入基於CORDIC演算法的波形發生器,最終獲得兩路正交的正餘弦輸出序列。

Ⅹ 什麼是先行進位

你找本計算機組成原理看下,就是多個加法器串聯的串列進位方式太慢了,就想辦法把他們並起來了,效果是最終的進位信號只與輸入有關,不依賴於中間的進位信號,怎麼推導我忘了。

閱讀全文

與進位鏈電路相關的資料

熱點內容
消防水泵接線需要多少芯電纜 瀏覽:205
六角眉筆怎麼防水 瀏覽:192
怎麼看電動車是不是舊車翻新 瀏覽:790
政府翻新樓外牆怎麼刮白的 瀏覽:401
怎麼去除家裡的舊傢具 瀏覽:280
佳能二手鏡頭怎麼看翻新 瀏覽:545
現在裝修需要買哪些家電 瀏覽:689
不傷傢具用什麼清潔 瀏覽:62
l防水結構怎麼設計 瀏覽:133
如何進行汽車維修說課 瀏覽:794
美國1916傢具 瀏覽:828
凱旋門傢具 瀏覽:720
老鎖子怎麼翻新 瀏覽:839
互聯家居家私傢具價格 瀏覽:922
北汽威旺M30售後維修電話 瀏覽:852
新房裝修好怎麼挑選傢具 瀏覽:839
醫院要維修如何向衛計局打報告 瀏覽:813
唐山華為售後服務電話 瀏覽:803
藍谷傢具生活館怎麼樣 瀏覽:565
上海科勒維修點 瀏覽:594