国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

FPGA拾憶_(3):調(diào)用IP 計(jì)數(shù)器&BCD計(jì)數(shù)器

這篇具有很好參考價(jià)值的文章主要介紹了FPGA拾憶_(3):調(diào)用IP 計(jì)數(shù)器&BCD計(jì)數(shù)器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

  • 調(diào)用IP計(jì)數(shù)器:

每來一個(gè)cin(進(jìn)位輸入)信號(hào),計(jì)數(shù)器輸出值加一,當(dāng)計(jì)數(shù)值為9且cin為1時(shí),輸出一個(gè)時(shí)鐘長(zhǎng)度的cout(進(jìn)位輸出)信號(hào)。

首先采用調(diào)用quartus種IP的方式,具體步驟:

Tools----IP Catalog:

然后會(huì)調(diào)出IP目錄窗口:

調(diào)用計(jì)數(shù)器,FPGA拾憶記錄,fpga開發(fā)

通過搜索counter來添加計(jì)數(shù)器模塊,需要設(shè)置的內(nèi)容有:bit位(幾位輸出寄存器)、計(jì)數(shù)值、?加一or減一、使能方式(clock enable ,count enable)、計(jì)數(shù)方式(時(shí)鐘 or carry in)、清零,置數(shù),預(yù)載等功能。

設(shè)置完成可以直接自己編寫top模塊,然后例化IP,eg:

調(diào)用計(jì)數(shù)器,FPGA拾憶記錄,fpga開發(fā)在頂層模塊,右鍵點(diǎn)擊 set as top-level....

調(diào)用計(jì)數(shù)器,FPGA拾憶記錄,fpga開發(fā)代碼:

module counter_mytop(clk,cin,cout,q);
	input  wire clk;
	input  wire cin;
	
	output  wire cout;  //這里都報(bào)錯(cuò)了,原因均是錯(cuò)誤使用了reg型來例化,
	output  wire [11:0]q;  //應(yīng)該使用wire來例化
	wire cout1;
	wire cout2;
	
	wire [3:0] q1;
	wire [3:0] q2;
	wire [3:0] q3;
	
	assign q = {q3,q2,q1};
	
	counter_myip  U1(
		.cin(cin),
		.clock(clk),
		.cout(cout1),
		.q(q1)
							);
							
	counter_myip  U2(
		.cin(cout1),
		.clock(clk),
		.cout(cout2),
		.q(q2)
							);
	counter_myip  U3(
		.cin(cout2),
		.clock(clk),
		.cout(cout),
		.q(q3)
							);
	

endmodule

易錯(cuò)點(diǎn):

在頂層模塊例化的時(shí)候,一定要注意,例化端口的數(shù)據(jù)類型必須是wire型,如下圖:

調(diào)用計(jì)數(shù)器,FPGA拾憶記錄,fpga開發(fā)無論子模塊的端口是reg還是wire型,因?yàn)樽幽K要迅速讀取來自外部信號(hào)的變化情況,所以頂層模塊例化時(shí)必須定義為wire類型?。?/p>

我自己在編譯時(shí)候,就提示錯(cuò)誤了,多個(gè)例化的中間變量or輸入輸出端口都報(bào)錯(cuò)了,因?yàn)槲词褂脀ire類型。調(diào)用計(jì)數(shù)器,FPGA拾憶記錄,fpga開發(fā)

  • BCD計(jì)數(shù)器

BCD碼的巨大優(yōu)勢(shì):

(BCD碼,使用4位2進(jìn)制來表示一位10進(jìn)制,可以粗淺理解為將16進(jìn)制直接讀為10進(jìn)制)

示例:

取出1158這個(gè)數(shù)的每一位來分別進(jìn)行操作:

(1)C語言的做法:

1158%10 = 8;//個(gè)位

1158/10? =115;

115%10 = 5;//十位

115/10 =11;

11%10 = 1;//百位

11/10 =1;//千位

顯然,這種方式對(duì)于硬件資源的浪費(fèi)極大,而且硬件對(duì)于除法運(yùn)算會(huì)舍去精度,因此對(duì)于“需要對(duì)數(shù)據(jù)進(jìn)行取各位運(yùn)算、非整體運(yùn)算時(shí)”,采用BCD碼可以大幅度減少運(yùn)算資源占用以及計(jì)算誤差。

如十進(jìn)制的1158,我們直接把它用16'h1158來代替,那么

????????????????16'h1_1_5_8

=16'b0001_0001_1001_1000

在硬件中,只需要讀出高四位數(shù)(0001),即代表千位,低四位(1000),即代表個(gè)位。

這樣完全避免了上面的轉(zhuǎn)化運(yùn)算,可以直接讀取十進(jìn)制的各個(gè)位數(shù)據(jù)?。。?/p>

?BCD計(jì)數(shù)器的最大計(jì)數(shù)值為10,也就是每次記到9,并且來了一個(gè)新的cin信號(hào)時(shí),cout輸出1:

調(diào)用計(jì)數(shù)器,FPGA拾憶記錄,fpga開發(fā)易錯(cuò)點(diǎn):

在剛開始仿真的時(shí)候,發(fā)現(xiàn)出現(xiàn)了一個(gè)這樣的錯(cuò)誤:

調(diào)用計(jì)數(shù)器,FPGA拾憶記錄,fpga開發(fā)

999之后再來cin信號(hào),計(jì)數(shù)值錯(cuò)誤,兩個(gè)時(shí)鐘之后,才恢復(fù)正常值,這是因?yàn)?99+1=000,但是個(gè)位向十位傳遞進(jìn)位時(shí),需要一個(gè)周期,十位向百位傳遞進(jìn)位時(shí),也需要一個(gè)周期,所以出問題了,把cout的輸出邏輯改為assign語句(即迅速傳遞進(jìn)位信息),可以解決。

調(diào)用計(jì)數(shù)器,FPGA拾憶記錄,fpga開發(fā)

?修改之后的仿真結(jié)果:

調(diào)用計(jì)數(shù)器,FPGA拾憶記錄,fpga開發(fā)

自己編寫的10進(jìn)制計(jì)數(shù)器:

仔細(xì)感悟一下q的always塊的條件書寫,體會(huì)條件書寫時(shí)的包含與被包含關(guān)系,理清思路

代碼:

module counter_my(clk,rst,cin,cout,q);
	
	input clk;
	input rst;
	input cin;
	output cout;  //進(jìn)位輸出
	output reg [3:0]q;	//計(jì)數(shù)輸出
	
	//q的輸出邏輯
	always@(negedge rst or posedge clk)begin
		if(!rst)
			q<=4'b0;
		else if(cin ==1)   //計(jì)數(shù)到10也復(fù)位
			begin
			if(q==4'b1001)
				q<=0;
			else
				q<=q+1;
			end
		else
			q<=q;
	end
	
	//cout的輸出邏輯
	assign cout = (q==4'b1001&&cin==1)?1:0;

endmodule

testbench:

`timescale 1ns/1ns
`define clockperiod 20   //時(shí)鐘周期20ns

module counter_myip_testbench;

		//激勵(lì)信號(hào)
		reg clk;
		reg cin;
		
		//檢測(cè)信號(hào)
		wire  [11:0] q;
		wire cout;

		//例化待檢測(cè)模塊,這里犯了錯(cuò)誤,例化時(shí)沒加例化名tb1,編譯不報(bào)錯(cuò)但是仿真無法進(jìn)行!!
		 counter_mytop     tb1( .clk(clk),
										.cin(cin),
										.cout(cout),
										.q(q)
										);

		//激勵(lì)施加過程
		initial clk = 1;
		always begin
		#(`clockperiod/2)   clk = ~clk;
		end
		
		//
		initial begin
		repeat(1500)begin
		#(`clockperiod*10); 
		cin = 1;
		#(`clockperiod*10); 
		cin = 0;
		end
		
		#1000;
		$stop;
		end
		

endmodule

?文章來源地址http://www.zghlxwxcb.cn/news/detail-775210.html

  • 小知識(shí)點(diǎn)擴(kuò)展:

?1.仿真時(shí),在modelsim窗口,可以將子模塊的端口也添加進(jìn)波形圖,來觀察子模塊端口的仿真情況:

調(diào)用計(jì)數(shù)器,FPGA拾憶記錄,fpga開發(fā)

2.為防止同名稱無法分析,可以在信號(hào)窗口點(diǎn)擊快捷鍵ctrl +G,進(jìn)行快速分組。

3.像下面的延時(shí)語句,雖然是不可綜合語句,但是會(huì)被綜合器忽略,而且反應(yīng)了電路實(shí)際延時(shí)情況,在自己測(cè)試時(shí)使用很方便(工作時(shí)不可以主動(dòng)寫這樣的代碼)。

調(diào)用計(jì)數(shù)器,FPGA拾憶記錄,fpga開發(fā)

?

再?gòu)?qiáng)調(diào)一下易錯(cuò)點(diǎn):首先是例化時(shí)要用wire類型,然后是testben中例化的元件名字不能落下,然后要注意計(jì)數(shù)器Q的輸出邏輯的撰寫,條件編寫正確。

voer!

?

?

到了這里,關(guān)于FPGA拾憶_(3):調(diào)用IP 計(jì)數(shù)器&BCD計(jì)數(shù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【FPGA零基礎(chǔ)學(xué)習(xí)之旅#6】ip核基礎(chǔ)知識(shí)之計(jì)數(shù)器

    【FPGA零基礎(chǔ)學(xué)習(xí)之旅#6】ip核基礎(chǔ)知識(shí)之計(jì)數(shù)器

    ??歡迎來到FPGA專欄~ip核基礎(chǔ)知識(shí)之計(jì)數(shù)器 ☆* o(≧▽≦)o *☆ 嗨 ~我是 小夏與酒 ?? ? 博客主頁: 小夏與酒的博客 ??該系列 文章專欄: FPGA學(xué)習(xí)之旅 文章作者技術(shù)和水平有限,如果文中出現(xiàn)錯(cuò)誤,希望大家能指正?? ?? 歡迎大家關(guān)注! ?? LPM_COUNTER IP核 的RTL視圖: IP核

    2024年02月09日
    瀏覽(18)
  • 【EDA技術(shù)】 實(shí)驗(yàn)二 BCD碼輸出的60進(jìn)制計(jì)數(shù)器的VHDL

    【EDA技術(shù)】 實(shí)驗(yàn)二 BCD碼輸出的60進(jìn)制計(jì)數(shù)器的VHDL

    (1) 熟悉EDA軟件,并能熟練使用。 (2) 分析設(shè)計(jì)任務(wù),根據(jù)任務(wù)要求完成設(shè)計(jì)內(nèi)容。 (3) 利用軟件對(duì)設(shè)計(jì)內(nèi)容進(jìn)行仿真調(diào)試,得到正確運(yùn)行結(jié)果。 (1)設(shè)計(jì)具有異步清零,同步使能的60進(jìn)制計(jì)數(shù)器,并用VHDL語句進(jìn)行例化 (2)設(shè)計(jì)七段譯碼器的VHDL代碼,利用元件例化的

    2024年02月02日
    瀏覽(29)
  • 【FPGA】Verilog:計(jì)數(shù)器 | 異步計(jì)數(shù)器 | 同步計(jì)數(shù)器 | 2位二進(jìn)制計(jì)數(shù)器的實(shí)現(xiàn) | 4位十進(jìn)制計(jì)數(shù)器的實(shí)現(xiàn)

    【FPGA】Verilog:計(jì)數(shù)器 | 異步計(jì)數(shù)器 | 同步計(jì)數(shù)器 | 2位二進(jìn)制計(jì)數(shù)器的實(shí)現(xiàn) | 4位十進(jìn)制計(jì)數(shù)器的實(shí)現(xiàn)

    目錄 Ⅰ. 實(shí)踐說明 0x00 計(jì)數(shù)器(Counter) 0x01 異步計(jì)數(shù)器(Asynchronous Counter)

    2024年02月05日
    瀏覽(34)
  • 【FPGA】Verilog:升降計(jì)數(shù)器 | 波紋計(jì)數(shù)器 | 約翰遜計(jì)數(shù)器 | 實(shí)現(xiàn) 4-bit 升降計(jì)數(shù)器的 UP/DOWN

    【FPGA】Verilog:升降計(jì)數(shù)器 | 波紋計(jì)數(shù)器 | 約翰遜計(jì)數(shù)器 | 實(shí)現(xiàn) 4-bit 升降計(jì)數(shù)器的 UP/DOWN

    目錄 Ⅰ. 理論部分 0x00?升降計(jì)數(shù)器(UP DOWN Counter) 0x01?波紋計(jì)數(shù)器(Ripple Counter)

    2024年02月05日
    瀏覽(35)
  • FPGA-計(jì)數(shù)器的實(shí)現(xiàn)

    FPGA-計(jì)數(shù)器的實(shí)現(xiàn)

    計(jì)數(shù)器是依托時(shí)鐘實(shí)現(xiàn)的,在時(shí)鐘沿(一般在上升沿)進(jìn)行檢測(cè),實(shí)現(xiàn)計(jì)數(shù)加1; 計(jì)數(shù)是從0開始計(jì)數(shù)的,所以計(jì)數(shù)值為(M-1),其中M為計(jì)數(shù)的值。比如計(jì)數(shù)到10,我們實(shí)現(xiàn)時(shí)到9即可; 這里為計(jì)數(shù)器的第一種實(shí)現(xiàn)方法,該方法非最優(yōu)方法,我們只需要了解即可,后續(xù)我們會(huì)介

    2024年02月04日
    瀏覽(20)
  • 計(jì)數(shù)器簡(jiǎn)介以及FPGA實(shí)現(xiàn)

    計(jì)數(shù)器簡(jiǎn)介以及FPGA實(shí)現(xiàn)

    在時(shí)序邏輯電路中,最基本的單元是寄存器,本篇將會(huì)介紹如何利用寄存器,實(shí)現(xiàn)一個(gè)具有計(jì)數(shù)器功能的電路。在FPGA開發(fā)中,一切與時(shí)間有關(guān)的設(shè)計(jì)都會(huì)用到計(jì)數(shù)器,所以學(xué)會(huì)設(shè)計(jì)計(jì)數(shù)器至關(guān)重要。 計(jì)數(shù)是一種最簡(jiǎn)單基本的運(yùn)算,計(jì)數(shù)器就是實(shí)現(xiàn)這種運(yùn)算的邏輯電路,計(jì)數(shù)

    2024年02月05日
    瀏覽(18)
  • fpga[1]計(jì)數(shù)器(附源碼)

    fpga[1]計(jì)數(shù)器(附源碼)

    計(jì)數(shù)器電路是在數(shù)字電子技術(shù)中應(yīng)用的最多的時(shí)序邏輯電路。計(jì)數(shù)器不僅能用于對(duì)時(shí)鐘脈沖計(jì)數(shù),還可以用于分頻、定時(shí)、產(chǎn)生節(jié)拍脈沖和脈沖序列以及進(jìn)行數(shù)字運(yùn)算等。 在許多大型電路中必然有計(jì)數(shù)器電路的身影,可以說了解并掌握計(jì)數(shù)器的設(shè)計(jì)方法是學(xué)習(xí)fpga的第一步。

    2023年04月25日
    瀏覽(24)
  • 【FPGA】Verilog:時(shí)序電路設(shè)計(jì) | 二進(jìn)制計(jì)數(shù)器 | 計(jì)數(shù)器 | 分頻器 | 時(shí)序約束

    【FPGA】Verilog:時(shí)序電路設(shè)計(jì) | 二進(jìn)制計(jì)數(shù)器 | 計(jì)數(shù)器 | 分頻器 | 時(shí)序約束

    前言: 本章內(nèi)容主要是演示Vivado下利用Verilog語言進(jìn)行電路設(shè)計(jì)、仿真、綜合和下載 示例:計(jì)數(shù)器與分頻器 ? ?? 功能特性:?采用?Xilinx Artix-7 XC7A35T芯片? 配置方式:USB-JTAG/SPI Flash 高達(dá)100MHz 的內(nèi)部時(shí)鐘速度? 存儲(chǔ)器:2Mbit SRAM ??N25Q064A SPI Flash(樣圖舊款為N25Q032A) 通用

    2024年02月02日
    瀏覽(34)
  • FPGA實(shí)驗(yàn)二:??勺冇?jì)數(shù)器設(shè)計(jì)

    目錄 一、實(shí)驗(yàn)?zāi)康?二、實(shí)驗(yàn)要求 三、實(shí)驗(yàn)代碼 1.實(shí)驗(yàn)源碼

    2024年02月12日
    瀏覽(39)
  • FPGA Vivado環(huán)境下實(shí)現(xiàn)計(jì)數(shù)器

    FPGA Vivado環(huán)境下實(shí)現(xiàn)計(jì)數(shù)器

    本文實(shí)現(xiàn)的是一個(gè)簡(jiǎn)單的計(jì)數(shù)器,模塊中包含時(shí)鐘信號(hào)和復(fù)位信號(hào),計(jì)數(shù)使用的是一個(gè)四位的輸出,復(fù)位鍵有效時(shí),計(jì)數(shù)器置零,當(dāng)時(shí)鐘信號(hào)上升沿時(shí),計(jì)數(shù)加一,實(shí)現(xiàn)計(jì)數(shù)。(僅供參考) 建立工程counter,并新建一個(gè)設(shè)計(jì)文件命名為:counter ? ? 3.打開counter文件,進(jìn)行計(jì)數(shù)器

    2024年01月21日
    瀏覽(56)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包