2021.7.5
今天白天去拔智齿了,所以学习时间受到了一定影响。尽量看能做多少做多少,
(32)在always过程块之中可以用case语句来代替多个if-else语句。
①case语句和C语言里面的switch case写法稍有不同,应该注意。
②switch case里面有break语句,case语句只能执行一个语句,如果要执行多条要使用begin...end语句块。
③case语句允许条件重合,然后执行程序匹配到的第一个,而switch case语句不允许。
④case语句是串行执行的。
(33)写一个把4位优先编码器,当给定输入向量时,输出其中右边第一个1的位置。
(34)在always过程块的case语句中引入了无关项(don’t-care bits)”z”。”?”也可以用来表示无关项。
//注意!引入了无关项的case语句变成了casez语句,关键字要改过来!
奇怪了,我这么写是错在哪里了?
module top_module (
input [7:0] in,
output reg [2:0] pos );
always @ (*)
begin
casez (in)
8'b00000000 : pos = 3'b000;
8'b1zzzzzzz : pos = 3'b111;
8'b01zzzzzz : pos = 3'b110;
8'b001zzzzz : pos = 3'b101;
8'b0001zzzz : pos = 3'b100;
8'b00001zzz : pos = 3'b011;
8'b000001zz : pos = 3'b010;
8'b0000001z : pos = 3'b001;
8'b00000001 : pos = 3'b000;
endcase
end
endmodule
算了先放着,之后复习一下优先编码器的知识再整。