色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

SystemVerilog構建大型電路

OpenFPGA ? 來源:OpenFPGA ? 2023-03-09 14:15 ? 次閱讀

Problem 151-review2015_count1k

題目說明

構建一個從 0 到 999(含)計數的計數器,周期為 1000 個周期。復位輸入是同步的,應該將計數器復位為 0。

2ae951c0-be40-11ed-bfe3-dac502259ad0.png

模塊端口聲明

moduletop_module(
inputclk,
inputreset,
output[9:0]q);

題目解析

moduletop_module(
inputlogicclk,
inputlogicreset,
outputlogic[9:0]q);


always_ff@(posedgeclk)begin
if(reset)begin
q<=?10'd0?;
????end
????else?if?(q?==?10'd999)?begin
????????q?<=?10'd0?;
????end
????else?begin
????????q?<=?q?+?10'd1?;
????end
????
end


endmodule


2b02de2e-be40-11ed-bfe3-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

2b095330-be40-11ed-bfe3-dac502259ad0.png

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅。

這一題就結束了。

Problem 152-review2015_shiftcount

題目說明

接下來的五道題目,每題構建一個小型的電路,最終組裝成為一個復雜的計數器電路。

本題設計一個 4bit 位寬的移位寄存器,并具有計數器功能,可向下計數(即計數值遞減)。

當移位使能 shift_ena 信號有效時,數據 data 移入移位寄存器,向高位移動(most-significant-bit),即左移。

當計數使能 count_ena 信號有效時,寄存器中現有的數值遞減,向下計數。

由于系統不會同時使用移位以及計數功能,因此不需要考慮兩者使能信號皆有效的情況。

2b14088e-be40-11ed-bfe3-dac502259ad0.png

模塊端口聲明

moduletop_module(
inputclk,
inputshift_ena,
inputcount_ena,
inputdata,
output[3:0]q);

題目解析

moduletop_module(
inputlogicclk,
inputlogicshift_ena,
inputlogiccount_ena,
inputlogicdata,
outputlogic[3:0]q);

always_ff@(posedgeclk)begin
case(1'b1)
shift_ena:begin
q<=?{q[2:0]?,?data}?;?
????????end?
????????count_ena:?begin
????????????q?<=?q?-?4'd1?;
????????end
????????default:?begin
????????????q?<=?q?;
????????end?
????endcase
end

endmodule

2b2575ba-be40-11ed-bfe3-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

2b37da66-be40-11ed-bfe3-dac502259ad0.png

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅。

這一題就結束了。

Problem 153-review2015_fsmseq

題目說明

接下來的五道題目,每題構建一個小型的電路,最終組裝成為一個復雜的計數器電路。

構建一個在輸入比特流中搜索序列 1101 的有限狀態機。當找到序列時,應該將start_shifting設置為 1,直到復位??ㄔ谧罱K狀態旨在模擬在尚未實現的更大 FSM 中進入其他狀態。我們將在接下來的幾個練習中擴展這個 FSM。

2b5ce608-be40-11ed-bfe3-dac502259ad0.png

模塊端口聲明

moduletop_module(
inputclk,
inputreset,//Synchronousreset
inputdata,
outputstart_shifting);

題目解析

檢查一個序列檢測狀態機是否完備,一個簡單的方法是觀察所有狀態,是否均包括輸入分別為 0/1 的情況下的跳轉,比如 state[IDLE ] && ~data 和 state[IDLE ] && data 是否均存在于狀態跳轉條件中。

moduletop_module(
inputlogicclk,
inputlogicreset,//Synchronousreset
inputlogicdata,
outputlogicstart_shifting
);

//definestate

typedefenumlogic[2:0]{idle=3'd1,S0=3'd2,
S1=3'd3,S2=3'd4,S3=3'd5
}state_def;

state_defcur_state,next_state;


//describestatetransitionusecombinationallogic

always_combbegin
case(cur_state)
idle:begin
next_state=data?S0:idle;
end

S0:begin
next_state=data?S1:idle;
end

S1:begin
next_state=data?S1:S2;
end

S2:begin
next_state=data?S3:idle;
end

S3:begin
next_state=S3;
end
default:begin
next_state=idle;
end
endcase
end


//describestatesequencerusesequentiallogic

always_ff@(posedgeclk)begin
if(reset)begin
cur_state<=?idle?;
????end
????else?begin
????????cur_state?<=?next_state?;
????end????
end

//describe?output?decoder?use?combinational?logic

assign?start_shifting?=?(cur_state?==?S3)?;

endmodule
2b72fb5a-be40-11ed-bfe3-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

2b7f61ec-be40-11ed-bfe3-dac502259ad0.png

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅。

這一題就結束了。

Problem 154-review2015_fsmshift

題目說明

接下來的五道題目,每題構建一個小型的電路,最終組裝成為一個復雜的計數器電路。

作為用于控制移位寄存器的 FSM 的一部分,我們希望能夠在檢測到正確的位模式時啟用移位寄存器正好 4 個時鐘周期。我們在Exams/review2015_fsmseq中處理序列檢測,因此 FSM 的這一部分僅處理啟用移位寄存器 4 個周期。

每當 FSM 復位時,將shift_ena斷言4 個周期,然后永遠為 0(直到復位)。

2b977a20-be40-11ed-bfe3-dac502259ad0.png 圖片來自HDLBits

模塊端口聲明

moduletop_module(
inputclk,
inputreset,//Synchronousreset
outputshift_ena);

題目解析

題目要求 reset 信號移除后,立即 輸出使能信號,因此需要組合邏輯輸出。

moduletop_module(
inputlogicclk,
inputlogicreset,//Synchronousreset
outputlogicshift_ena);

//definestate
typedefenumlogic{S0=1'd0,S1=1'd1}state_def;
state_defcur_state,next_state;

//describestatesequencerusesequentiallogic
always_ff@(posedgeclk)begin
if(reset)begin
cur_state<=?S0?;
????end
????else?begin
????????cur_state?<=?next_state?;
????end
end

//describe?state?transition?use?combinational?logic

always_comb?begin?
????case?(cur_state)
????????S0:?begin
????????????next_state?=?reset???S0?:?S1?;
????????end

????????S1:?begin
????????????next_state?=?reset???S0?:?S1?;
????????end
????????default:?begin
????????????next_state?=?cur_state?;
????????end
????endcase
end

//define?counter?use?sequential?logic
var?logic?[6:0]?counter?;
always_ff?@(?posedge?clk?)?begin?
????if?(reset)?begin
????????counter?<=?7'd0?;
????end
????else?if?(next_state?==?S1)?begin
????????counter?<=?counter?+?7'd1?;
????end
????else?begin
????????counter?<=?counter?;
????end
end

//describe?output?decoder?use?sequential?logic

assign?shift_ena?=?(cur_state?==?S0)?||?(cur_state?==?S1?&&?counter?
2ba1716a-be40-11ed-bfe3-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

2bc0d3ac-be40-11ed-bfe3-dac502259ad0.png

注意圖中無波形。

這一題就結束了。

Problem 155-review2015_fsm

題目說明

本題實現復雜計數器的第四個組件。

在此題之前,我們已經分別實現了 FSM:Enable shift register 以及 FSM:1101 序列檢測器。接下來我們繼續前進,實現這個復雜計數器的完整 FSM。

復雜計數器需要如下這些功能特性:

在數據流中檢測到特定序列后啟動計數器,該序列為: 1101將 4bits 數據輸入移位寄存器,作為計數器的初值等待計數器結束計數告知上層應用計數完成,并等待用戶通過 ack 信號確認在本題練習中,只需要實現控制狀態機,不需要實現數據通路,比如計數器本身以及數據比較器等。

數據流從模塊的 data 信號輸入,當檢測到 1101 序列后,狀態機需要置高輸出信號 shft_ena 并保持 4 個周期(用于將接下來 4bit 數據輸入移位寄存器)。

之后,狀態機置高 counting 信號,表示其正在等待計數器完成計數,當計數器完成計數輸出 done_counting 信號后,counting 信號置低。

再此后,狀態機置高 done 信號通知上層應用計數器計數完成,等待 ack 信號置高后,狀態機清除 done 信號,返回空閑狀態等待捕獲下一個 1101 序列。

本題給出了一個期望輸入輸出的例子。圖中的斜線代表當前信號為 'X', 表示狀態機不關心該信號當前的值。比如圖例中,一旦 FSM 檢測到 1101 序列后,在此次計數器事件完成前,對于當前的數據流不再關心。

2bd205be-be40-11ed-bfe3-dac502259ad0.png

模塊端口聲明

moduletop_module(
inputclk,
inputreset,//Synchronousreset
inputdata,
outputshift_ena,
outputcounting,
inputdone_counting,
outputdone,
inputack);

題目解析

狀態轉移圖

2bdc6ef0-be40-11ed-bfe3-dac502259ad0.png

moduletop_module(
inputlogicclk,
inputlogicreset,//Synchronousreset
inputlogicdata,
outputlogicshift_ena,
outputlogiccounting,
inputlogicdone_counting,
outputlogicdone,
inputlogicack
);

//definestate

typedefenumlogic[2:0]{idle=3'd1,S0=3'd2,S1=3'd3,
S2=3'd4,shif=3'd5,count=3'd6,
waite=3'd7
}state_def;

state_defcur_state,next_state;


//describestatetransitionusecombinationallogic

always_combbegin
case(cur_state)
idle:begin
next_state=data?S0:idle;
end

S0:begin
next_state=data?S1:idle;
end

S1:begin
next_state=data?S1:S2;
end

S2:begin
next_state=data?shif:idle;
end

shif:begin
next_state=counter
2bec2890-be40-11ed-bfe3-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

2c026f60-be40-11ed-bfe3-dac502259ad0.png

注意圖中無參考波形。

這一題就結束了。

Problem 156-review2015_fancytimer

題目說明

終于到了完整構建復雜計數器的時候,整體功能已經在上題中討論,這里不再贅述。

在數據流中檢測到序列 1101 后,電路需要將接下來的 4bit 數據移入移位寄存器。4bit 數據決定了計數器的計數周期,稱為 delay[3:0]。首先到達的比特作為數據的高位。

之后,狀態機置高 counting 信號,表示其正在等待計數器完成計數。在 FSM 中增加計數器狀態,計數周期為 (delay[3:0] + 1 )* 1000 個時鐘周期。比如 delay = 0 時,計數值為 1000 個周期。delay = 5 代表 6000 個周期。同時輸出 count 當前剩余的計數周期,輸出當前剩余計數周期的千位(比如,還剩1000個周期輸出 1,還剩 999 個周期時輸出 0)。當計數停止后,count 的輸出可以為任意數。

當計數完成后,電路置高 done 信號通知上層應用計數器計數完成,等待 ack 信號置高后,狀態機清除 done 信號,返回空閑狀態等待捕獲下一個 1101 序列。

本題給出了一個期望輸入輸出的例子。圖中的斜線代表當前信號為 'X', 表示狀態機不關心該信號當前的值。比如圖例中,一旦 FSM 檢測到 1101 序列并讀取 delay[3:0] 后,在此次計數器事件完成前,對于當前的數據流不再關心。

在圖例中,電路計數周期為 2000 ,因為 delay[3:0] 數值為 4'b0001 。在后續的第二個計數周期中,因為 delay[3:0] = 4‘b1110,所以計數周期為 15000。

2c0d4b9c-be40-11ed-bfe3-dac502259ad0.png 圖片來自HDLBits

模塊端口聲明

moduletop_module(
inputclk,
inputreset,//Synchronousreset
inputdata,
output[3:0]count,
outputcounting,
outputdone,
inputack);

題目解析

moduletop_module(
inputlogicclk,
inputlogicreset,//Synchronousreset
inputlogicdata,
outputlogic[3:0]count,
outputlogiccounting,
outputlogicdone,
inputlogicack
);

//definestate

typedefenumlogic[2:0]{idle=3'd1,S0=3'd2,S1=3'd3,
S2=3'd4,shif=3'd5,count_t=3'd6,
waite=3'd7
}state_def;

state_defcur_state,next_state;


//describestatetransitionusecombinationallogic

always_combbegin
case(cur_state)
idle:begin
next_state=data?S0:idle;
end

S0:begin
next_state=data?S1:idle;
end

S1:begin
next_state=data?S1:S2;
end

S2:begin
next_state=data?shif:idle;
end

shif:begin
next_state=counter_shif=1000&&counter<=?1999)begin
????????counter_delay?=?4'd1;
????end
????else?if(counter?>=2000&&counter<=?2999)begin
????????counter_delay?=?4'd2;
????end
????else?if(counter?>=3000&&counter<=?3999)begin
????????counter_delay?=?4'd3;
????end
????else?if(counter?>=4000&&counter<=?4999)begin
????????counter_delay?=?4'd4;
????end
????else?if(counter?>=5000&&counter<=?5999)begin
????????counter_delay?=?4'd5;
????end
????else?if(counter?>=6000&&counter<=?6999)begin
????????counter_delay?=?4'd6;
????end
????else?if(counter?>=7000&&counter<=?7999)begin
????????counter_delay?=?4'd7;
????end
????else?if(counter?>=8000&&counter<=?8999)begin
????????counter_delay?=?4'd8;
????end
????else?if(counter?>=9000&&counter<=?9999)begin
????????counter_delay?=?4'd9;
????end
????else?if(counter?>=10000&&counter<=?10999)begin
????????counter_delay?=?4'd10;
????end
????else?if(counter?>=11000&&counter<=?11999)begin
????????counter_delay?=?4'd11;
????end
????else?if(counter?>=12000&&counter<=?12999)begin
????????counter_delay?=?4'd12;
????end
????else?if(counter?>=13000&&counter<=?13999)begin
????????counter_delay?=?4'd13;
????end
????else?if(counter?>=14000&&counter<=?14999)begin
????????counter_delay?=?4'd14;
????end
????else?begin
????????counter_delay?=?4'd15;
????end
end?????


endmodule

2c2c34c6-be40-11ed-bfe3-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

2c45e178-be40-11ed-bfe3-dac502259ad0.png

注意圖中無波形。

這一題就結束了。

Problem 157-review2015_fsmonehot

題目說明

給定以下具有 3 個輸入、3 個輸出和 10 個狀態的狀態機:

2bdc6ef0-be40-11ed-bfe3-dac502259ad0.png 圖片來自HDLBits

假定使用以下one-hot編碼, 通過檢查推導出下一狀態邏輯方程和輸出邏輯方程: (S, S1, S11, S110, B0, B1, B2, B3, Count, Wait) = (10'b0000000001, 10 'b0000000010, 10'b0000000100, ..., 10'b1000000000)

假設采用one-hot編碼,通過檢查推導狀態轉換和輸出邏輯方程。僅為該狀態機實現狀態轉換邏輯和輸出邏輯(組合邏輯部分)。(測試臺將使用非熱輸入進行測試,以確保不會嘗試做更復雜的事情。請參閱fsm3onehot用于描述單熱狀態機“通過檢查”推導邏輯方程的含義。)

編寫生成以下等式的代碼:

B3_next ,B2 狀態的次態(原題寫的 B1,應該為筆誤)

S_next

S1_next

Count_next

以及下列輸出信號

done

counting

shift_ena

模塊端口聲明

moduletop_module(
inputd,
inputdone_counting,
inputack,
input[9:0]state,//10-bitone-hotcurrentstate
outputB3_next,
outputS_next,
outputS1_next,
outputCount_next,
outputWait_next,
outputdone,
outputcounting,
outputshift_ena
);

題目解析

moduletop_module(
inputlogicd,
inputlogicdone_counting,
inputlogicack,
inputlogic[9:0]state,//10-bitone-hotcurrentstate
outputlogicB3_next,
outputlogicS_next,
outputlogicS1_next,
outputlogicCount_next,
outputlogicWait_next,
outputlogicdone,
outputlogiccounting,
outputlogicshift_ena
);//

//Youmayusetheseparameterstoaccessstatebitsusinge.g.,state[B2]insteadofstate[6].
parameterlogic[3:0]S=4'd0,S1=4'd1,S11=4'd2,S110=4'd3,
B0=4'd4,B1=4'd5,B2=4'd6,B3=4'd7,
Count=4'd8,Wait=4'd9;

assignB3_next=state[B2];
assignS_next=~d&state[S]|~d&state[S1]|~d&state[S110]|ack&state[Wait];
assignS1_next=d&state[S];
assignCount_next=state[B3]|~done_counting&state[Count];
assignWait_next=done_counting&state[Count]|~ack&state[Wait];
assigndone=state[Wait];
assigncounting=state[Count];
assignshift_ena=state[B0]|state[B1]|state[B2]|state[B3];

endmodule
2c624a70-be40-11ed-bfe3-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

2c7f0f52-be40-11ed-bfe3-dac502259ad0.png

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅。

這一題就結束了。

總結

今天的幾道題就結束了,今天是大型電路的設計思路,分模塊設計。




審核編輯:劉清

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

    關注

    32

    文章

    2256

    瀏覽量

    94686
  • 時序電路
    +關注

    關注

    1

    文章

    114

    瀏覽量

    21718
  • 狀態機
    +關注

    關注

    2

    文章

    492

    瀏覽量

    27561
  • Verilog語言
    +關注

    關注

    0

    文章

    113

    瀏覽量

    8274

原文標題:HDLBits: 在線學習 SystemVerilog(二十二)-Problem 151-157(構建大型電路)

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    SystemVerilog 的VMM驗證方法學教程教材

    SystemVerilog 的VMM 驗證方法學教程教材包含大量經典的VMM源代碼,可以實際操作練習的例子,更是ic從業人員的絕佳學習資料。SystemVerilog 的VMM 驗證方法學教程教材[hide][/hide]
    發表于 01-11 11:21

    [啟芯公開課] SystemVerilog for Verification

    設計驗證相關的公開課!SystemVerilog作為IEEE-1800,將VLSI設計、驗證和斷言屬性集中在一起,是數字超大規模集成電路設計和驗證領域最流行的語言。從2006年至今
    發表于 06-10 09:25

    systemverilog--語法詳解

    官方的一個systemverilog詳解,很詳細。推薦給打算往IC方面發展的朋友。
    發表于 06-02 09:30

    systemverilog學習教程

    systemverilog的一些基本語法以及和verilog語言之間的區別。
    發表于 04-01 14:24

    round robin 的 systemverilog 代碼

    大家好,我對一個 round robin 的 systemverilog 代碼有疑惑。https://www.edaplayground.com/x/2TzD代碼第49和54行是怎么解析呢 ?
    發表于 03-14 19:16

    做FPGA工程師需要掌握SystemVerilog嗎?

    在某大型科技公司的招聘網站上看到招聘邏輯硬件工程師需要掌握SystemVerilog語言,感覺SystemVerilog語言是用于ASIC驗證的,那么做FPGA工程師有沒有必要掌握System
    發表于 08-02 20:30

    SystemVerilog有哪些標準?

    SystemVerilog有哪些標準?
    發表于 06-21 08:09

    (2)打兩拍systemverilog與VHDL編碼 精選資料分享

    2打兩拍systemverilog與VHDL編碼1 本章目錄1)FPGA簡介2)SystemVerilog簡介3)VHDL簡介4)打兩拍verilog編碼5)打兩拍VHDL編碼6)結束語2 FPGA
    發表于 07-26 06:19

    SystemVerilog Assertion Handbo

    SystemVerilog Assertion Handbook1 ROLE OF SYSTEMVERILOG ASSERTIONSIN A VERIFICATION METHODOLOGY
    發表于 07-22 14:08 ?188次下載

    SystemVerilog的斷言手冊

    SystemVerilog Assertion Handbook1 ROLE OF SYSTEMVERILOG ASSERTIONSIN A VERIFICATION METHODOLOGY
    發表于 07-22 14:12 ?20次下載

    基于事件結構的SystemVerilog指稱語義

    本文利用形式化的方法對SystemVerilog的指稱語義進行研究,采用EBES(extendedbundle event structure)作為抽象模型,以便更好的描述SystemVerilog真并發的特點。我們的主要工作是:首先,
    發表于 12-22 14:01 ?12次下載

    SystemVerilog的正式驗證和混合驗證

    手冊的這一部分探討了使用SystemVerilog進行驗證,然后查看了使用SystemVerilog的優點和缺點。
    發表于 03-29 10:32 ?24次下載

    SystemVerilog中的struct

    SystemVerilog“struct”表示相同或不同數據類型的集合。
    的頭像 發表于 11-07 10:18 ?2475次閱讀

    SystemVerilog中的Shallow Copy

    SystemVerilog中的句柄賦值和對象復制的概念是有區別的。
    的頭像 發表于 11-21 10:32 ?926次閱讀

    Systemverilog中的Driving Strength講解

    systemverilog中,net用于對電路中連線進行建模,driving strength(驅動強度)可以讓net變量值的建模更加精確。
    的頭像 發表于 06-14 15:50 ?1620次閱讀
    <b class='flag-5'>Systemverilog</b>中的Driving Strength講解
    主站蜘蛛池模板: 一区不卡二区卡| 日本久久精品免视看国产成人| 小sao货ji巴cao死你视频| 国产成人精品免费视频大| 一边亲着一面膜下奶韩剧免费| 日本动漫henta videos| 久久久久九九| 国产偷抇久久精品A片蜜臀A| chinesevideos原创麻豆| 尤物国产在线精品三区| 亚欧成人毛片一区二区三区四区| 免费99精品国产自在现线| 国产又爽又黄又不遮挡视频| 高H内射NP古文| 99久久免费精品国产| 永久免费看bbb| 亚洲乱色视频在线观看| 无码成人AAAAA毛片含羞草| 日本精品久久久久中文字幕2| 免费撕开胸罩吮胸视频| 久久性生大片免费观看性| 国内精品免费视频精选在线观看| 俄罗斯乌克兰战争原因| a在线观看视频| 91桃色污无限免费看| 在线观看亚洲AV无码每日更新| 亚洲精品一卡二卡三卡四卡2021| 手机移动oa| 色偷偷网址| 色欲AV精品人妻一二三区| 欧美特级特黄AAAAA片| 嫩草影院在线观看精品| 久久亚洲精品永久网站| 精品久久久久亚洲| 国产网红主播精品福利大秀专区| 国产69精品麻豆久久久久| 成年人深夜福利| 潮 喷女王cytherea| 草民电影网午夜伦理电影网| SM调教贱屁股眼哭叫求饶H| CHINA中国东北GURMA|