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

基于Verilog的跑馬燈設(shè)計(jì)

這篇具有很好參考價(jià)值的文章主要介紹了基于Verilog的跑馬燈設(shè)計(jì)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


一、設(shè)計(jì)要求

設(shè)計(jì)一個(gè)能夠有多種工作模式控制的8個(gè)燈亮滅的電路。
工作模式1:按照從左到右的方向,依次點(diǎn)亮每一盞燈,然后依次熄滅每一盞燈;
工作模式2:分成兩組燈,前四個(gè)燈為1組,后四個(gè)為2組,1組燈按從左到右依次點(diǎn)亮,同時(shí)2組燈按從右到左依次點(diǎn)亮,然后兩組燈按各自點(diǎn)亮的順序依次熄滅;
工作模式3:用11110000作為一組燈的序列,按照該順序完成8盞燈亮滅:即首先燈1亮,然后燈2亮,然后燈3亮,然后燈4亮,然后燈5不亮,然后燈6不亮,然后燈7不亮,然后燈8不亮,然后八個(gè)燈同時(shí)變成亮,亮,亮,亮,不亮,不亮,不亮,不亮,并保持下去。
工作模式4:自行設(shè)計(jì)一個(gè)模式控制8個(gè)燈亮滅。要求和前三個(gè)工作模式不同。

要求每種工作模式重復(fù)兩次,并在2分鐘內(nèi)完成所有工作模式。

輸入信號(hào): 選擇信號(hào)[1:0]S, 時(shí)鐘信號(hào)clk, 復(fù)位信號(hào)reset
輸出信號(hào): 跑馬燈亮滅信號(hào)[7:0]Y


二、設(shè)計(jì)思路

用選擇信號(hào)S控制四種模式的運(yùn)行,用復(fù)位信號(hào)reset保證每個(gè)新模式的運(yùn)行從第一個(gè)狀態(tài)開始

1. 總體框圖

基于Verilog的跑馬燈設(shè)計(jì)

2. 按功能模塊的分模塊結(jié)構(gòu)圖

運(yùn)行模式1:
基于Verilog的跑馬燈設(shè)計(jì)
運(yùn)行模式2:
基于Verilog的跑馬燈設(shè)計(jì)
運(yùn)行模式3:
基于Verilog的跑馬燈設(shè)計(jì)
運(yùn)行模式4:
基于Verilog的跑馬燈設(shè)計(jì)

3. 狀態(tài)圖

運(yùn)行模式1:
基于Verilog的跑馬燈設(shè)計(jì)
運(yùn)行模式2
基于Verilog的跑馬燈設(shè)計(jì)
運(yùn)行模式3:
基于Verilog的跑馬燈設(shè)計(jì)
運(yùn)行模式4:
基于Verilog的跑馬燈設(shè)計(jì)


三、代碼實(shí)現(xiàn)

1. Verilog代碼

module horse_race_lamp(input[1:0]S,
							  input clk,
							  input reset,
							  output reg[7:0]Y);
reg[33:0] cnt;
reg clk_div;
reg[3:0]state;
parameter 
S0=0,
			S1=1,
			S2=2,
			S3=3,
			S4=4,
			S5=5,
			S6=6,
			S7=7,
			S8=8,
			S9=9,
			S10=10,
			S11=11,
			S12=12,
			S13=13,
			S14=14,
			S15=15;
//******************分頻模塊************************//
/*
always@(posedge clk)//時(shí)鐘周期:0.2*10^(-7)s,分頻后的時(shí)鐘周期:0.5s
begin
	if(cnt==34'd25_000_000)
			begin
				clk_div<=~clk_div;
				cnt<=0;
			end
	else
			cnt<=cnt+1;
end
*/
//*************************************************//
always@(posedge clk or posedge reset)
begin
	if(reset)
		begin
			Y[7:0]<=8'b0000_0000;
			state<=S0;
		end
	else
	case({S[1],S[0]})
	2'b00:
	begin
		case(state)
		S0:
			begin 
				Y[7:0]<=8'b1000_0000;
					state<=S1; 
			end 
		S1:
			begin 
				Y[7:0]<=8'b1100_0000;
					state<=S2; 
			end
		S2:
			begin 
				Y[7:0]<=8'b1110_0000;
					state<=S3; 
			end
		S3:
			begin 
				Y[7:0]<=8'b1111_0000;
					state<=S4; 
			end
		S4:
			begin 
				Y[7:0]<=8'b1111_1000;
					state<=S5; 
			end
		S5:
			begin 
				Y[7:0]<=8'b1111_1100;
					state<=S6; 
			end
		S6:
			begin 
				Y[7:0]<=8'b1111_1110;
					state<=S7; 
			end
		S7:
			begin 
				Y[7:0]<=8'b1111_1111;
					state<=S8; 
			end
		S8:
			begin 
				Y[7:0]<=8'b0111_1111;
					state<=S9; 
			end
		S9:
			begin 
				Y[7:0]<=8'b0011_1111;
					state<=S10; 
			end
		S10:
			begin 
				Y[7:0]<=8'b0001_1111;
					state<=S11; 
			end
		S11:
			begin 
				Y[7:0]<=8'b0000_1111;
					state<=S12; 
			end
		S12:
			begin 
				Y[7:0]<=8'b0000_0111;
					state<=S13; 
			end
		S13:
			begin 
				Y[7:0]<=8'b0000_0011;
					state<=S14; 
			end
		S14:
			begin 
				Y[7:0]<=8'b0000_0001;
					state<=S15; 
			end
		S15:
			begin 
				Y[7:0]<=8'b0000_0000;
					state<=S0; 
			end
		default
			begin
				Y[7:0]<=8'b0000_0000;
					state<=S0;
			end
		endcase
	end
	2'b01:
	begin
		case(state)
		S0:
			begin 
				Y[7:0]<=8'b1000_0001;
					state<=S1; 
			end 
		S1:
			begin 
				Y[7:0]<=8'b1100_0011;
					state<=S2; 
			end 
		S2:
			begin 
				Y[7:0]<=8'b1110_0111;
					state<=S3; 
			end 
		S3:
			begin 
				Y[7:0]<=8'b1111_1111;
					state<=S4; 
			end 
		S4:
			begin 
				Y[7:0]<=8'b0111_1110;
					state<=S5; 
			end 
		S5:
			begin 
				Y[7:0]<=8'b0011_1100;
					state<=S6; 
			end 
		S6:
			begin 
				Y[7:0]<=8'b0001_1000;
					state<=S7; 
			end 
		S7:
			begin 
				Y[7:0]<=8'b0000_0000;
					state<=S0; 
			end 
		default
			begin
				Y[7:0]<=8'b0000_0000;
					state<=S0;
			end
		endcase
	end
	2'b10:
	begin
		case(state)//11110000
		S0:
			begin 
				Y[7:0]<=8'b1000_0000;
					state<=S1; 
			end 
		S1:
			begin 
				Y[7:0]<=8'b0100_0000;
					state<=S2; 
			end 
		S2:
			begin 
				Y[7:0]<=8'b0010_0000;
					state<=S3; 
			end 
		S3:
			begin 
				Y[7:0]<=8'b0001_0000;
					state<=S4; 
			end 
		S4:
			begin 
				Y[7:0]<=8'b0000_0000;
					state<=S5; 
			end 
		S5:
			begin 
				Y[7:0]<=8'b0000_0000;
					state<=S6; 
			end 
		S6:
			begin 
				Y[7:0]<=8'b0000_0000;
					state<=S7; 
			end 
		S7:
			begin 
				Y[7:0]<=8'b0000_0000;
					state<=S8; 
			end 
		S8:
			begin 
				Y[7:0]<=8'b1111_0000;
					state<=S0; 
			end
		default
			begin
				Y[7:0]<=8'b0000_0000;
					state<=S0;
			end
		endcase
	end
	2'b11:
	begin
		case(state)
		S0:
			begin
				Y[7:0]<=8'b0101_0101;
					state<=S1;
			end
		S1:
			begin
				Y[7:0]<=8'b1100_1100;
					state<=S2;
			end
		S2:
			begin
				Y[7:0]<=8'b1010_1010;
					state<=S3;
			end
		S3:
			begin
				Y[7:0]<=8'b0011_0011;
					state<=S0;
			end
		default
			begin
				Y[7:0]<=8'b0000_0000;
					state<=S0;
			end
		endcase
	end
	default
		Y[7:0]<=8'b0000_0000;
	endcase
end
endmodule

2. Testbench關(guān)鍵代碼

initial                                                
begin                                                  
clk=1;
reset=1;
#5 reset=0;
{S[1],S[0]}=2'b00;
#400 reset=1;
#5 reset=0;
{S[1],S[0]}=2'b01;
#200 reset=1;
#5 reset=0;
{S[1],S[0]}=2'b10;
#200 reset=1;
#5 reset=0;
{S[1],S[0]}=2'b11;
#100 $stop;                       
$display("Running testbench");                       
end                                                    
always                                                                 
begin                                                  
#5 clk=~clk;                                         
end   

3. 程序的流程步驟

先將clk和reset初始化為1,5ps后,reset置零,選擇信號(hào)為00,運(yùn)行模式1。
400ps后,reset先變成1,5ps后再變成0,選擇信號(hào)為01,運(yùn)行模式2。
200ps后,reset先變成1,5ps后再變成0,選擇信號(hào)為10,運(yùn)行模式3。
200ps后,reset先變成1,5ps后再變成0,選擇信號(hào)為11,運(yùn)行模式4。
100ps后結(jié)束程序運(yùn)行
其中時(shí)鐘周期為10ps


四、仿真結(jié)果

運(yùn)行模式1:
基于Verilog的跑馬燈設(shè)計(jì)

經(jīng)過復(fù)位后,S變?yōu)?0。Y按照工作模式1每盞燈亮滅的順序輸出不同的值。

運(yùn)行模式2:
基于Verilog的跑馬燈設(shè)計(jì)

經(jīng)過復(fù)位后,S變?yōu)?1。Y按照工作模式2每盞燈亮滅的順序輸出不同的值。

運(yùn)行模式3:
基于Verilog的跑馬燈設(shè)計(jì)

經(jīng)過復(fù)位后,S變?yōu)?0,Y按照工作模式3每盞燈亮滅的順序輸出不同的值

運(yùn)行模式4:
基于Verilog的跑馬燈設(shè)計(jì)

經(jīng)過復(fù)位后,S變?yōu)?1,Y按照工作模式4每盞燈亮滅的順序輸出不同的值。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-480787.html

到了這里,關(guān)于基于Verilog的跑馬燈設(shè)計(jì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(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)文章

  • 3.跑馬燈

    3.跑馬燈

    推挽模式輸出:因?yàn)長(zhǎng)ED0和LED1陽(yáng)極都是3.3V,需要將陰極設(shè)置為低電平才可以點(diǎn)亮LED; 操作io口時(shí),必須引入源文件和頭文件; 關(guān)于時(shí)鐘的文件存放在rcc中; void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); 作用:初始化一個(gè)或多個(gè)io口(同一組)的工作方式和速度, 該函數(shù)

    2024年02月10日
    瀏覽(23)
  • Android --- 跑馬燈效果

    Android --- 跑馬燈效果

    跑馬燈效果主要使用的控件為TextView,其中涉及的幾個(gè)標(biāo)簽如下所示: android:ellipsize If set, causes words that are longer than the view is wide to be ellipsized instead of broken in the middle. You will often also want to set scrollHorizontally or singleLine as well so that the text as a whole is also constrained to a single line in

    2023年04月08日
    瀏覽(25)
  • 跑馬燈實(shí)驗(yàn)

    跑馬燈實(shí)驗(yàn)

    ???????? 1.熟悉龍芯實(shí)驗(yàn)開發(fā)板、熟悉 VIVADO 的編譯環(huán)境及操作流程。 ????????2.掌握 FPGA 編程入門知識(shí)、利用門級(jí)方法實(shí)現(xiàn)簡(jiǎn)單邏輯電路。 ????????3.繼續(xù)學(xué)習(xí) Verilog HDL 語(yǔ)法、掌握跑馬燈的設(shè)計(jì)、熟悉調(diào)試過程。 ???????? 本次實(shí)驗(yàn)用 Verilog HDL 語(yǔ)言來(lái)描述 6 個(gè)不

    2024年02月04日
    瀏覽(27)
  • CSS按鈕-跑馬燈邊框

    CSS按鈕-跑馬燈邊框

    思路很簡(jiǎn)單,實(shí)現(xiàn)方法有很多很多。但是大體思路與實(shí)現(xiàn)方法都類似:漸變色 + 動(dòng)畫,主要區(qū)別在動(dòng)畫的具體實(shí)現(xiàn)

    2024年02月11日
    瀏覽(32)
  • 跑馬燈實(shí)驗(yàn)(stm32)

    跑馬燈實(shí)驗(yàn)(stm32)

    說明:以下內(nèi)容參考正點(diǎn)原子的相關(guān)資料 這里使用的是位帶操作來(lái)實(shí)現(xiàn)操作某個(gè) IO 口的 1 個(gè)位 相應(yīng)的庫(kù)函數(shù)操作代碼。 BSRR:端口位設(shè)置/清除寄存器 BRR:端口位清除寄存器 可以看到紅綠燈交錯(cuò)閃爍

    2024年02月13日
    瀏覽(25)
  • CSS 之 跑馬燈邊框

    CSS 之 跑馬燈邊框

    一、簡(jiǎn)介 ? 之前有做過漸變色邊框的樣式,然后某天刷抖??,看到某個(gè)老師在講跑馬燈的樣式效果,于是就自己嘗試實(shí)現(xiàn)一下跑馬燈樣式的邊框,雖然這種樣式并不常見(基本沒卵用),其使用場(chǎng)景我至今沒想到,但是它足夠花里胡哨,玩的就是花活。CSS才是前端最難精通

    2024年01月17日
    瀏覽(26)
  • Android 實(shí)現(xiàn)跑馬燈效果

    Android中實(shí)現(xiàn)跑馬燈效果有多種方式,本篇簡(jiǎn)單介紹下: 1: TextView屬性實(shí)現(xiàn) 這里需要注意下: 需要限制textview的寬度,不能設(shè)置為wrap_content 啟動(dòng)跑馬燈效果需要獲取焦點(diǎn)requestFocus(). 2: 代碼實(shí)現(xiàn) 3: 自定義 view實(shí)現(xiàn) 這里可以使用動(dòng)畫的效果實(shí)現(xiàn). 4: 實(shí)現(xiàn)豎直效果的跑馬燈

    2024年01月18日
    瀏覽(26)
  • Vue跑馬燈簡(jiǎn)單案列

    Vue跑馬燈簡(jiǎn)單案列

    套在自己的vue模板里面即可 content是顯示的內(nèi)容,shouldMove是否滾動(dòng)(如果大于了文本框才滾動(dòng),否則禁止不懂),showResult是否顯示滾動(dòng)條 效果

    2024年02月22日
    瀏覽(24)
  • uni小程序 跑馬燈效果

    寫在前面 前幾天幫一個(gè)朋友咋小程序上加一個(gè)類似于跑馬燈的效果,本自己手寫了一個(gè)。(代碼和截圖都在下方) 效果展示 等我截圖~~~ 代碼展示(布局代碼) 主要就是圖片css哪里加了一個(gè)“ flex-shrink: 0; ”,因?yàn)橹皇潜镜氐囊粋€(gè)功能,所以我就圖片數(shù)據(jù)就寫死了,需要的自

    2024年02月12日
    瀏覽(25)
  • 應(yīng)廣單片機(jī)實(shí)現(xiàn)跑馬燈

    ? ? ? ? 應(yīng)廣單片機(jī)處處體現(xiàn)其mini的特性,非常適合做各種方案開發(fā),特別是點(diǎn)燈,什么跑馬燈,氛圍燈,遙控?zé)?,感?yīng)燈,拍拍燈等,用應(yīng)廣都OK。 ? ? ? ?跑馬燈是基礎(chǔ)中的基礎(chǔ),我搭了一個(gè)框架,要進(jìn)行擴(kuò)展或是修改也很容易。不多說,上代碼。 #include?? ?\\\"extern.h\\\"

    2024年02月09日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包