Verilog學習筆記簡單功能實現(四)...............譯碼器和編碼器


這里以簡單的3-8譯碼器和8-3編碼器為例:

module decoder3_8(a,out);
 input [2:0]a;
  output [7:0]out;
  assign out=1'b1<<a;/*把最低位的1左移in位(根據in口輸入的值)並賦予out*/
endmodule


8-3編碼器程序:

1)利用for循環

 1 module encoder8_3(a,out,none_on);
 2   input [7:0]a;
 3   output [2:0]out;
 4   output none_on;
 5   reg [2:0]out;
 6   reg none_on;           //要在always塊中賦值,必須為reg型數據
 7   
 8   always @(a)
 9    begin:local           //這里必須要有定義順序塊的名字,因為后面要定義局部變量,有可能被實例化調用
10     integer i;
11     out=0;
12     none_on=1;
13     for(i=0;i<8;i=i+1)   //這里代表返回輸入信號a的8位中,為1的最高位數,即高位優先編碼;
14       begin              //如果需要低位優先編碼,只需要改成 for(i=7;i>=0;i=i-1)
15       if(a[i])
16         begin
17         out=i;
18         none_on=0;
19         end 
20       end 
21    end
22 endmodule
View Code

 2)利用?:三目運算符

 1 module encoder8_3(a,b,c,d,e,f,g,h,out1,out2,out0,none_on);
 2   input a,b,c,f,d,e,g,h;
 3   output out0,out1,out2,none_on;
 4   wire [3:0]outvec;
 5   
 6   assign outvec=h?4'b0111:g?4'b0110:f?4'b0101:e?4'b0100:d?4'b0011:c?4'b0010:b?4'b0001:a?4'b0000:4'b1000;
 7   assign out0=outvec[0];
 8   assign out1=outvec[1];
 9   assign out2=outvec[2];
10   assign none_on=outvec[3];
11 endmodule 

 3)利用條件語句

 1 module encoder8_3(a,b,c,d,e,f,g,h,out1,out2,out0,none_on);
 2   input a,b,c,f,d,e,g,h;
 3   output out0,out1,out2,none_on;
 4   reg [3:0]outvec;
 5   
 6   always @(a or b or c or d or e or f or g or h)
 7   begin
 8   if(h) outvec=4'b0111;
 9     else if(g) outvec=4'b0110;
10       else if(f) outvec=4'b0101;
11         else if(e) outvec=4'b0100;
12           else if(d) outvec=4'b0011;
13             else if(c) outvec=4'b0010;
14               else if(b) outvec=4'b0001;
15                 else if(a) outvec=4'b0000;
16                   else     outvec=4'b1000;
17   end
18   assign out0=outvec[0];
19   assign out1=outvec[1];
20   assign out2=outvec[2];
21   assign none_on=outvec[3];
22 endmodule 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM