:移位暫存器, alu, 多路選擇器,二進位制乘法器,模n計數器,詹森計數器,引數化比較器,詹森解碼器
移位暫存器:
module unishiftregister(clk,reset,leftin,rightin,sel,loaddta,q);
parameter nbits = 4:
input clk,reset,leftin,rightin;
input [1:0] sel;
input [nbits-1:0] loaddta;
output [nbits-1:0] q;
reg [nbits-1:0] q;
always @(posedge clk)
if(reset==1)
q<=0;
else
case(sel)
2'b00: ;
2'b01:q<=;
2'b10:q<=;
2'b11:q<=loaddta;
endcase
endmodule
簡單alu(使用assign):
module arithlogicunit(a,b,opcode,dataz,compz);
parameter nbits = 2;
input [nbits-1:0] a,b;
input [1:0] opcode;
output [nbits-1:0] dataz;
output compz;
parameter and_op=0,nand_op=1,gt_op=2,xor_op=3;
assign dataz = (opcode == and_op)? a & b:
(opcode == nand_op)? ~(a&b):
(opcode == xor_op)? a`b:
'bx;
assign compz = (opcode == gt_op)? (a>b):'bx;
endmodule
多路選擇器(使用assign):
module muxtol(a,b,select,enable,q);
input a,b,select,enable;
output q;
assign q = (enable)?(select?a:b):'bz;
endmodule
二進位制乘法器::
(1)利用for迴圈
module mult_for(a,b,out);
parameter size=8;
input [size:1] a,b;
output [2*size:1] out;
reg [2*size:1] out;
always@(a or b)
begin
out=0;
for(i=1;i<=size;i=i+1)
if(b[i]==1)
out=out+(a<<(i-1));
end
endmodule
(2)利用repeat迴圈
module mult_repeat(a,b,out);
parameter size=8;
input [size:1] a,b;
output [2*size:1] out;
reg [2*size:1] out;
always@(a or b)
begin
out=0;
temp_a=a;
temp_b=b;
repeat(size)
begin
if(temp_b[1]==1)
out=out+temp_a;
temp_a=(a<<1);
temp_b=(b>>1);
endend
endmodule
模n計數器:
module counter_nbits_upton(clk,reset,q,qbar);
parameter nbits=2,upto=3;
input clk,reset;
output [nbits-1:0] q,qbar;
reg [nbits-1:0] counter
always @(posedge clk)
if(reset==1)
counter<=0;
else
counter<=(counter+1)%upto;
assign q=counter;
assign qbar=~counter;
endmodule
詹森計數器
module johnsoncounter(clk,reset,q);
parameter nbits = 3;
input clk,reset;
output [nbits-1:0] q;
reg [nbits-1] q;
always@(posedge clk)
begin
if(reset==1)
q<=0;
else if(q[nbits-1]==0)
q<=;
else
q<=;
endendmodule
引數化比較器:
module comparator(a,b,eq,gt,lt,ne,ge,le);
parameter nbits = 2;
input [nbits-1:0] a,b;
output eq,gt,lt,ne,ge,le;
reg [5:0] resultbus;
always @ (a or b)
if (a==b)
resultbus = 6'b100111;
else if(a>b)
resultbus = 6'b010110;
else
resultbus = 6'b001101;
assign =resultbus;
endmodule
詹森解碼器:
module johnsondecoder(s,en,y);
parameter n=3;
input [n-1:0] s;
input en;
output [2*n-1:0] y;
reg [2*n-1:0] y;
reg [2*n-1:0] addr;
integer i;
always @ (s or en)
if (en==1)
begin
addr=0;
for(i=0;iif(s[i])
addr=addr+1;
if(s[n-1])
addr=2*n-addr;
y='b0;
y[addr]='b1;
endelse
y='bx;
endmodule
python通用模組 python通用模組使用例子
usr bin python coding utf 8 author administrator import os import sys import shutil import struct python通用模組使用例子 result os.system pwd print type resul...
Verilog 模組和埠
模組定義以關鍵字module開始,模組名 埠列表 埠宣告和可選的引數宣告必須出現在其他部分的前面,endmodule語句必須為模組的最後一條語句。模組內部的5個組成部分是 變數宣告 資料流語句 低層模組例項 行為語句塊以及任何和函式。在模組的組成部分中,只有module 模組名 endmodule必...
Verilog 模組例化
模組的概念 模組 module 是verilog最基本的概念,是v設計中的基本單元,每個v設計的系統中都由若干module組成。2 模組的實際意義是代表硬體電路上的邏輯實體。3 每個模組都實現特定的功能。4 模組的描述方式有行為建模和結構建模之分。5 模組之間是並行執行的。6 模組是分層的,高層模組...