電商網(wǎng)站用php做的嗎網(wǎng)絡(luò)營(yíng)銷的表現(xiàn)形式有哪些
LV5_位拆分與運(yùn)算
題目來(lái)源于牛客網(wǎng)
[??途W(wǎng)在線編程_Verilog篇_Verilog快速入門 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page=1&tab=Verilog篇&topicId=301)
題目
題目描述:
現(xiàn)在輸入了一個(gè)壓縮的16位數(shù)據(jù),其實(shí)際上包含了四個(gè)數(shù)據(jù),[3:0],[7:4],[11:8],[15:12]
現(xiàn)在請(qǐng)按照sel選擇輸出四個(gè)數(shù)據(jù)的相加結(jié)果,并輸出valid_out信號(hào)(在不輸出時(shí)候拉低)
0: 不輸出且只有此時(shí)的輸入有效
1:輸出[3:0]+[7:4]
2:輸出[3:0]+[11:8]
3:輸出[3:0]+[15:12]
信號(hào)示意圖:
波形示意圖:
輸入描述:
輸入信號(hào) d, clk, rst
類型 wire
在testbench中,clk為周期5ns的時(shí)鐘,rst為低電平復(fù)位
輸出描述:
輸出信號(hào) validout out
類型 reg
代碼
`timescale 1ns/1nsmodule data_cal(input clk,input rst,input [15:0]d,input [1:0]sel,output reg [4:0]out,output reg validout
);
//*************code***********//
/*代碼思路:先將d分為4個(gè)單獨(dú)的變量;
根據(jù)sel的值來(lái)選擇不同的輸出,case語(yǔ)句
*/ reg [15:0] enable_in; //定義一個(gè)寄存器變量來(lái)存儲(chǔ)有效輸入時(shí)d的值reg [3:0] data1,data2,data3,data4 ;always @(*) beginif(sel == 0) begin //sel=0,只有此時(shí)的輸入有效 ,將此時(shí)的d的值存起來(lái)enable_in <= d;data1 <= enable_in[3:0];data2 <= enable_in[7:4];data3 <= enable_in[11:8];data4 <= enable_in[15:12]; endend//case循環(huán),根據(jù)sel的值來(lái)執(zhí)行不同的輸出always @(posedge clk or negedge rst) beginif(!rst) beginvalidout <= 0;out <= 0;endelse begincase (sel)2'd0 : beginout <= 0;validout <= 0;enable_in <= d;end2'd1 : beginout <= data1 + data2;validout <= 1;enable_in <= 0;end2'd2 : beginout <= data1 + data3;validout <= 1;enable_in <= 0;end2'd3 : beginout <= data1 + data4;validout <= 1;enable_in <= 0;enddefault : beginout <= 0;validout <= 0;enable_in <= 0;endendcaseendend//*************code***********//
endmodule