⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bmg.v

📁 (2
💻 V
字号:
`timescale 1ns / 1ps
////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer:
//
// Create Date:    09:55:46 07/30/09
// Design Name:    
// Module Name:    bmg
// Project Name:   
// Target Device:  
// Tool versions:  
// Description:
//
// Dependencies:
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
////////////////////////////////////////////////////////////////////////////////
module bmg(Reset, Clock2, ACSSegment, Code, Distance);
input Reset, Clock2;
input [3:0] ACSSegment;
input [1:0] Code;

output [15:0] Distance;

wire [6:0] PolyA, PolyB;
wire [6:0] wA, wB;

assign   PolyA = 7'b101_101_1;  // polynomial code used
assign   PolyB = 7'b111_100_1;

wire [6:0] B0,B1,B2,B3,B4,B5,B6,B7;    // Pay attention to the  WIDTH of B = WD_STATE + 1
wire [1:0] G0,G1,G2,G3,G4,G5,G6,G7;   // branch output to be  calculated
wire [1:0] D0,D1,D2,D3,D4,D5,D6,D7;   // output distances

reg [1:0] CodeRegister;

   always @(posedge Clock2 or negedge Reset)
   begin
     if (~Reset) CodeRegister <= 0;
     else if (ACSSegment == 6'h3F) CodeRegister <= Code;
   end

   assign B0 = {ACSSegment,3'b000};   // The branch to be calculated is 
   assign B1 = {ACSSegment,3'b001};   // determined by ACSSegment
   assign B2 = {ACSSegment,3'b010};
   assign B3 = {ACSSegment,3'b011};
   assign B4 = {ACSSegment,3'b100};
   assign B5 = {ACSSegment,3'b101};
   assign B6 = {ACSSegment,3'b110};
   assign B7 = {ACSSegment,3'b111};


   branch_gen EN0(PolyA,PolyB,B0,G0); assign G1 = ~G0; // Find the 'correct' 
   branch_gen EN2(PolyA,PolyB,B2,G2); assign G3 = ~G2; // branch metric
   branch_gen EN4(PolyA,PolyB,B4,G4); assign G5 = ~G4;
   branch_gen EN6(PolyA,PolyB,B6,G6); assign G7 = ~G6;
      
   dist_calc HD0(CodeRegister,G0,D0);   // Calculate its hamming 
   dist_calc HD1(CodeRegister,G1,D1);   // distance
   dist_calc HD2(CodeRegister,G2,D2); 
   dist_calc HD3(CodeRegister,G3,D3); 
   dist_calc HD4(CodeRegister,G4,D4); 
   dist_calc HD5(CodeRegister,G5,D5); 
   dist_calc HD6(CodeRegister,G6,D6); 
   dist_calc HD7(CodeRegister,G7,D7); 
   
   assign Distance = {D7,D6,D5,D4,D3,D2,D1,D0};  // bus of distances


endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -