Q
quan228228
Guest
मेरी 8051 में, वहाँ एक synopsys DW02_mac खंड है.अनुकार सही है.परन्तु
जब मैं fpga चलाने के लिए, यह पाते हैं कि मैक काम नहीं कर सकता.
मैक funciotn एक ख * C है;
उदाहरण के लिए,
एक 16'h0001 =, ख = 16'hffff, ग 32'h0000_0000 =;
fpga परिणाम 32'h0000_00001 है;
अनुकार परिणाम 32'hffff_ffff है;
Fpga संश्लेषण या कोड के साथ संबंधित दोष है?या वहाँ DW02_mac के लिए इसी उदारीकरण है?
कृपया मेरी मदद करो.बहुत बहुत धन्यवाद.
निम्नलिखित DW02_mac.v है;
मॉड्यूल DW02_mac
(ए, बी, सी, टीसी, मैक);
= 8 A_width पैरामीटर;
= 8 B_width पैरामीटर;
/ / आदेश में बंदरगाह सूची घोषणा
A_width इनपुट [-1: 0] एक;
B_width इनपुट [-1: 0] बी;
B_width इनपुट [A_width -1: 0] सी;
इनपुट तृकां;
B_width निर्गम [A_width -1: 0] मैक; reg [A_width B_width-1: 0] मैक;
B_width समारोह [A_width -1: 0] signed_mult;
A_width इनपुट [-1: 0] एक;
B_width इनपुट [-1: 0] बी;
A_width reg [-1: 0] A1;
B_width reg [-1: 0] B1;
B_width reg [A_width -1: 0] C1;
प्रारंभ करना
/ / Synopsys synthesis_off
अगर ((एक [1] === 1'bx A_width | | बी [1] === 1'bx)) B_width शुरू
signed_mult = (A_width B_width (1'bx));
और अंत
/ / Synopsys synthesis_on
प्रारंभ करना
अगर A_width (एक [1] === 1'b1)
A1 = A-;
अन्यथा
A1 एक =;
अगर B_width (बी [1] === 1'b1)
B1 = बी;
अन्यथा
बी बी 1 =;
C1 = B1 * A1;
अगर A_width (एक [1]! == बी [B_width-1])
= C1-signed_mult;
अन्यथा
= C1 signed_mult;
अंत
अंत
endfunction
हमेशा शुरू
अगर (टीसी === 1'b1) आरंभ / / हस्ताक्षर किए गुणा
मैक <= signed_mult (ए, बी) C;
और अंत में शुरू
मैक <= एक * B C;
अंत / / यदि
तृकां @ (या एक या बी या सी);
अंत प्रक्रिया / /
endmoduleजोड़ा गया 1 घंटे 44 मिनट के बाद:
मुझे आश्चर्य है कि अगर समारोह sythesisable है.दाऊद
जब मैं fpga चलाने के लिए, यह पाते हैं कि मैक काम नहीं कर सकता.
मैक funciotn एक ख * C है;
उदाहरण के लिए,
एक 16'h0001 =, ख = 16'hffff, ग 32'h0000_0000 =;
fpga परिणाम 32'h0000_00001 है;
अनुकार परिणाम 32'hffff_ffff है;
Fpga संश्लेषण या कोड के साथ संबंधित दोष है?या वहाँ DW02_mac के लिए इसी उदारीकरण है?
कृपया मेरी मदद करो.बहुत बहुत धन्यवाद.
निम्नलिखित DW02_mac.v है;
मॉड्यूल DW02_mac
(ए, बी, सी, टीसी, मैक);
= 8 A_width पैरामीटर;
= 8 B_width पैरामीटर;
/ / आदेश में बंदरगाह सूची घोषणा
A_width इनपुट [-1: 0] एक;
B_width इनपुट [-1: 0] बी;
B_width इनपुट [A_width -1: 0] सी;
इनपुट तृकां;
B_width निर्गम [A_width -1: 0] मैक; reg [A_width B_width-1: 0] मैक;
B_width समारोह [A_width -1: 0] signed_mult;
A_width इनपुट [-1: 0] एक;
B_width इनपुट [-1: 0] बी;
A_width reg [-1: 0] A1;
B_width reg [-1: 0] B1;
B_width reg [A_width -1: 0] C1;
प्रारंभ करना
/ / Synopsys synthesis_off
अगर ((एक [1] === 1'bx A_width | | बी [1] === 1'bx)) B_width शुरू
signed_mult = (A_width B_width (1'bx));
और अंत
/ / Synopsys synthesis_on
प्रारंभ करना
अगर A_width (एक [1] === 1'b1)
A1 = A-;
अन्यथा
A1 एक =;
अगर B_width (बी [1] === 1'b1)
B1 = बी;
अन्यथा
बी बी 1 =;
C1 = B1 * A1;
अगर A_width (एक [1]! == बी [B_width-1])
= C1-signed_mult;
अन्यथा
= C1 signed_mult;
अंत
अंत
endfunction
हमेशा शुरू
अगर (टीसी === 1'b1) आरंभ / / हस्ताक्षर किए गुणा
मैक <= signed_mult (ए, बी) C;
और अंत में शुरू
मैक <= एक * B C;
अंत / / यदि
तृकां @ (या एक या बी या सी);
अंत प्रक्रिया / /
endmoduleजोड़ा गया 1 घंटे 44 मिनट के बाद:
मुझे आश्चर्य है कि अगर समारोह sythesisable है.दाऊद