Układy mnoŝące H D L. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska
|
|
- Magdalena Romanowska
- 6 lat temu
- Przeglądów:
Transkrypt
1 Układy mnoŝące 1
2 MnoŜenie w układzie sekwencyjnym P = A X = N 1 k = 0 k a k 2 X MnoŜenie szeregowo-równoległe równoległe Czynnik X jest przesuwany o k pozycji: jeŝeli a k 0 to X*2 k jest dodawane i zapisywane w rejestrze (akumulatorze), jeŝeli a k = 0 to dodawanie jest pomijane. 2
3 Układ mnoŝący sekwencyjny V WAIT UNTI clk = '1'; width := n-1; PACKAGE const IS CASE state IS CONSTANT n : integer := 4; WEN s0 => EN PACKAGE const; state <= s1; IBRARY work; count := 0; USE work.const.a; p := 0; IBRARY ieee; t := b; USE ieee.std_logic_1164.a; WEN s1 => USE ieee.std_logic_arith.a; IF a(count) = '1' TEN p := p + t; ENTITY mul_reg IS EN IF; PORT (clk : IN ST_OGIC; t := t * 2; a : IN ST_OGIC_VECTOR(n-1 OWNTO 0); IF count = width TEN b : IN INTEGER RANGE 0 TO (2**n)-1; state <= s2; y : OUT INTEGER RANGE 0 TO (2**(2*n))-1); ESE EN mul_reg; count := count + 1; state <= s1; ARCITECTURE arch_mult OF mul_reg IS EN IF; TYPE STATE_TYPE IS (s0, s1, s2); WEN s2 => SIGNA state : STATE_TYPE; y <= p; BEGIN state <= s0; States: PROCESS EN CASE; VARIABE p, t : INTEGER RANGE 0 TO (2**(2*n))-1; EN PROCESS States; VARIABE count, width : INTEGER RANGE 0 TO n+1; EN arch_mult; BEGIN 3
4 Układ mnoŝący sekwencyjny Verilog // serial multiplication module mul_reg(clk, a, b, y); parameter n = 8; input clk; input [n-1:0] a,b; output [2*n-1:0] y; s1: begin if (a[count]==1) p <= p + t; reg [2*n-1:0] y; t <= t<<1; if (count == n-1) always@(posedge clk) begin : fsm parameter s0=0,s1=1,s2=2; reg [1:0] state; reg [2*n-1:0] p, t; reg [3:0] count; case(state) s0: begin state <= s1; count <= 0; p <= 0; t <= b; end state <= s2; else begin count <= count + 1; state <= s1; end end s2: begin y <= p; state <= s0; end endcase end endmodule 4
5 MnoŜenie w układzie sekwencyjnym - symulacja Realizacja w FPGA: Altera Flex10K70 EPF10K70RC240-4 komórek f [Mz] t_clk [ns] (przerzutników) 4 bit 50 (29) 53,19 18,8 8 bit 105 (55) 38,91 25,7 5
6 MnoŜenie w układzie macierzowym (kombinacyjnym) a 3 a 2 a 1 a 0 b 3 b 2 b 1 b a 3 b 0 a 2 b 0 a 1 b 0 a 0 b 0 M a 3 b 1 a 2 b 1 a 1 b 1 a 0 b 1 0 M a 3 b 2 a 2 b 2 a 1 b 2 a 0 b M 2 0 a 3 b 3 a 2 b 3 a 1 b 3 a 0 b M 3 p 7 p 6 p 5 p 4 p 3 p 2 p 1 p 0 P = A B, n = 4 M i = A b i 2 i 6
7 MnoŜenie macierzowe 4-bitowe MnoŜenie równoległo-równoległe 7
8 IBRARY work; USE work.fa_package.a; IBRARY ieee; USE ieee.std_logic_1164.a; ENTITY mul_fa IS GENERIC (n : INTEGER := 4); MnoŜenie macierzowe MnoŜenie 4-bitowe - realizacja macierzowe 4-bitowe V PORT ( a_in, b_in : IN ST_OGIC_VECTOR(n-1 OWNTO 0); clk : IN ST_OGIC; p_out : OUT ST_OGIC_VECTOR(2*n-1 OWNTO 0)); EN mul_fa; ARCITECTURE mul_arch OF mul_fa IS SIGNA a : ST_OGIC_VECTOR(n-1 OWNTO 0); SIGNA b : ST_OGIC_VECTOR(n-1 OWNTO 0); SIGNA p : ST_OGIC_VECTOR(2*n-1 OWNTO 0); SIGNA s0 : ST_OGIC_VECTOR(n-2 OWNTO 0); SIGNA s1 : ST_OGIC_VECTOR(n-2 OWNTO 0); SIGNA s2 : ST_OGIC_VECTOR(n-2 OWNTO 0); SIGNA s3 : ST_OGIC_VECTOR(n-2 OWNTO 0); SIGNA c0 : ST_OGIC_VECTOR(n-2 OWNTO 0); SIGNA c1 : ST_OGIC_VECTOR(n-2 OWNTO 0); SIGNA c2 : ST_OGIC_VECTOR(n-2 OWNTO 0); SIGNA c3 : ST_OGIC_VECTOR(n-2 OWNTO 0); SIGNA m0 : ST_OGIC_VECTOR(n-1 OWNTO 0); SIGNA m1 : ST_OGIC_VECTOR(n-1 OWNTO 0); SIGNA m2 : ST_OGIC_VECTOR(n-1 OWNTO 0); SIGNA m3 : ST_OGIC_VECTOR(n-1 OWNTO 0); 8
9 MnoŜenie macierzowe 4-bitowe realizacja V BEGIN Reg: PROCESS (clk) BEGIN IF clk'event AN (clk = '1') TEN a <= a_in; b <= b_in; p_out <= p; EN IF; EN PROCESS Reg; m_0: FOR i IN n-1 OWNTO 0 GENERATE m0(i) <= a(i) AN b(0); EN GENERATE; m_1: FOR i IN n-1 OWNTO 0 GENERATE m1(i) <= a(i) AN b(1); EN GENERATE; m_2: FOR i IN n-1 OWNTO 0 GENERATE m2(i) <= a(i) AN b(2); EN GENERATE; m_3: FOR i IN n-1 OWNTO 0 GENERATE m3(i) <= a(i) AN b(3); EN GENERATE; 9
10 MnoŜenie macierzowe 4-bitowe - realizacja ha0_0: ha PORT MAP (a => m0(1), b => m1(0), s => s0(0), cout => c0(0)); ha0_1: ha PORT MAP (a => m0(2), b => m1(1), s => s0(1), cout => c0(1)); ha0_2: ha PORT MAP (a => m0(3), b => m1(2), s => s0(2), cout => c0(2)); fa1_0: fa PORT MAP (a => s0(1), b => m2(0), cin => c0(0), s => s1(0), cout => c1(0)); fa1_1: fa PORT MAP (a => s0(2), b => m2(1), cin => c0(1), s => s1(1), cout => c1(1)); fa1_2: fa PORT MAP (a => m1(3), b => m2(2), cin => c0(2), s => s1(2), cout => c1(2)); fa2_0: fa PORT MAP (a => s1(1), b => m3(0), cin => c1(0), s => s2(0), cout => c2(0)); fa2_1: fa PORT MAP (a => s1(2), b => m3(1), cin => c1(1), s => s2(1), cout => c2(1)); fa2_2: fa PORT MAP (a => m2(3), b => m3(2), cin => c1(2), s => s2(2), cout => c2(2)); ha3_0: ha PORT MAP (a => c2(0), b => s2(1), s => s3(0), cout => c3(0)); fa3_1: fa PORT MAP (a => c2(1), b => s2(2), cin => c3(0), s => s3(1), cout => c3(1)); fa3_2: fa PORT MAP (a => c2(2), b => m3(3), cin => c3(1), s => s3(2), cout => c3(2)); p(0) <= m0(0); p(1) <= s0(0); p(2) <= s1(0); p(3) <= s2(0); p(4) <= s3(0); p(5) <= s3(1); p(6) <= s3(2); p(7) <= c3(2); EN mul_arch; 10
11 MnoŜenie macierzowe 4-bitowe Verilog // 4-bit multiplier (fa) //'include "fa.v"; //'include "ha.v"; module mul_fa(clk,a_in,b_in,p_out); parameter n=4; input clk; input [n-1:0] a_in, b_in; output [2*n-1:0] p_out; genvar i; generate for (i = 0; i < n; i=i+1) begin : m_i assign m0[i] = a[i] & b[0]; assign m1[i] = a[i] & b[1]; assign m2[i] = a[i] & b[2]; assign m3[i] = a[i] & b[3]; end endgenerate reg [2*n-1:0] p_out; reg [n-1:0] a, b; wire [2*n-1:0] p; wire [n-2:0] s0,s1,s2,s3; wire [n-2:0] c0,c1,c2,c3; wire [n-1:0] m0,m1,m2,m3; always@(posedge clk) begin a <= a_in; b <= b_in; p_out <= p; end 11
12 MnoŜenie macierzowe 4-bitowe Verilog ha ha_0 (.a(m0[1]),.b(m1[0]),.s(s0[0]),.cout(c0[0])); ha ha_1 (.a(m0[2]),.b(m1[1]),.s(s0[1]),.cout(c0[1])); ha ha_2 (.a(m0[3]),.b(m1[2]),.s(s0[2]),.cout(c0[2])); fa fa1_0 (.a(s0[1]),.b(m2[0]),.cin(c0[0]),.s(s1[0]),.cout(c1[0])); fa fa1_1 (.a(s0[2]),.b(m2[1]),.cin(c0[1]),.s(s1[1]),.cout(c1[1])); fa fa1_2 (.a(m1[3]),.b(m2[2]),.cin(c0[2]),.s(s1[2]),.cout(c1[2])); fa fa2_0 (.a(s1[1]),.b(m3[0]),.cin(c1[0]),.s(s2[0]),.cout(c2[0])); fa fa2_1 (.a(s1[2]),.b(m3[1]),.cin(c1[1]),.s(s2[1]),.cout(c2[1])); fa fa2_2 (.a(m2[3]),.b(m3[2]),.cin(c1[2]),.s(s2[2]),.cout(c2[2])); ha ha3_0 (.a(c2[0]),.b(s2[1]),.s(s3[0]),.cout(c3[0])); fa fa3_1 (.a(c2[1]),.b(s2[2]),.cin(c3[0]),.s(s3[1]),.cout(c3[1])); fa fa3_2 (.a(c2[2]),.b(m3[3]),.cin(c3[1]),.s(s3[2]),.cout(c3[2])); endmodule assign p = {c3[2],s3[2],s3[1],s3[0],s2[0],s1[0],s0[0],m0[0]}; 12
13 MnoŜenie macierzowe - symulacja komórek przerzutników f [Mz] t_clk [ns] ,5 24,7 13
14 MnoŜenie macierzowe sumator równoległy CSA Sumator równoległy bez propagacji przeniesienia Carry-Save Adder MnoŜenie jest rozłoŝone na operacje sumowania, więc moŝna wykorzystać bloki CSA sumowanie bez uwzględniania przeniesienia 14
15 MnoŜenie macierzowe sumator równoległy CSA V -- Carry Save Adder IBRARY ieee; USE ieee.std_logic_1164.a; ENTITY csa IS GENERIC (n : INTEGER := 4); PORT ( a, b, cin : IN ST_OGIC_VECTOR(n-1 OWNTO 0); s, cout : OUT ST_OGIC_VECTOR(n-1 OWNTO 0)); EN csa; ARCITECTURE csa_arch OF csa IS BEGIN csa: FOR i IN n-1 OWNTO 0 GENERATE s(i) <= a(i) XOR b(i) XOR cin(i); cout(i) <= (a(i) AN b(i)) OR (a(i) AN cin(i)) OR (b(i) AN cin(i)); EN GENERATE; EN csa_arch; 15
16 MnoŜenie macierzowe sumator równoległy CSA Verilog // Carry Save Adder module csa(a, b, cin, s, cout); parameter n = 4; input [n-1:0] a, b, cin; output [n-1:0] s, cout; genvar i; generate for (i = 0; i < n; i=i+1) begin : csa assign s[i] = a[i] ^ b[i] ^ cin[i]; assign cout[i] = a[i] & b[i] a[i] & cin[i] b[i] & cin[i]; end endgenerate endmodule 16
17 MnoŜenie CSA 4-bitowe n-2 poziomów CSA C* przesunięte o 1 bit w lewo CPA Carry Propagate Adder 17
18 MnoŜenie CSA 4-bitowe sumator CPA V ENTITY cpa IS --- Carry Propagate Adder GENERIC(n : INTEGER := 8); PORT(s: IN ST_OGIC_VECTOR(n-1 OWNTO 0); EN cpa; c :IN ST_OGIC_VECTOR(n-1 OWNTO 0); p: OUT ST_OGIC_VECTOR(n-1 OWNTO 0)); ARCITECTURE cpa_arch OF cpa IS SIGNA cout_cin : ST_OGIC_VECTOR(n-2 OWNTO 1); BEGIN p(0) <= s(0); EN cpa_arch; Blok potrzebny do wyznaczenia sumy na ostatnim poziomie ha1: ha PORT MAP(a => s(1), b => c(0), s => p(1), cout => cout_cin(1)); fa_n: FOR i IN 2 TO n-2 GENERATE fa_n: fa PORT MAP(a => s(i), b => c(i-1), cin => cout_cin(i-1), s => p(i), cout => cout_cin(i)); EN GENERATE; p(n-1) <= cout_cin(n-2) XOR s(n-1) XOR c(n-2); 18
19 MnoŜenie CSA 4-bitowe sumator CPA Verilog // Carry Propagate Adder module cpa(s,c,p); parameter n = 8; input [n-1:0] s, c; output [n-1:0] p; Blok potrzebny do wyznaczenia sumy na ostatnim poziomie wire [n-2:0] cout_cin; assign p[0] = s[0]; ha ha1(.a(s[1]),.b(c[0]),.s(p[1]),.cout(cout_cin[1])); genvar i; generate for (i = 2; i <= n-2; i=i+1) begin : fa_i fa fa_n(.a(s[i]),.b(c[i-1]),.cin(cout_cin[i-1]),.s(p[i]),.cout(cout_cin[i])); end endgenerate assign p[n-1] = cout_cin[n-2] ^ s[n-1] ^ c[n-2]; endmodule 19
20 MnoŜenie CSA 4-bitowe V IBRARY ieee; USE ieee.std_logic_1164.a; PACKAGE csa_package IS... EN csa_package; IBRARY work; USE work.csa_package.a; IBRARY ieee; USE ieee.std_logic_1164.a; ENTITY mul_csa IS GENERIC (n : INTEGER := 4); PORT (a, b : IN ST_OGIC_VECTOR(n-1 OWNTO 0); clk : IN ST_OGIC; p : OUT ST_OGIC_VECTOR(2*n-1 OWNTO 0)); EN mul_csa; ARCITECTURE mul_arch OF mul_csa IS SIGNA a_r, b_r : ST_OGIC_VECTOR(n-1 OWNTO 0); SIGNA p_r : ST_OGIC_VECTOR(2*n-1 OWNTO 0); SIGNA s0, s1 : ST_OGIC_VECTOR(2*n-1 OWNTO 0); SIGNA c0, c0_out, c1 : ST_OGIC_VECTOR(2*n-1 OWNTO 0); SIGNA m0, m1, m2, m3 : ST_OGIC_VECTOR(2*n-1 OWNTO 0); 20
21 MnoŜenie CSA 4-bitowe V m2(1 OWNTO 0) <= "00"; m_2: FOR i IN 5 OWNTO 2 GENERATE BEGIN m2(i) <= a_r(i-2) AN b_r(2); Reg: PROCESS (clk) EN GENERATE; BEGIN m_2msb: FOR i IN 2*n-1 OWNTO 6 GENERATE IF clk'event AN (clk = '1') TEN m2(i) <= '0'; a_r <= a; EN GENERATE; b_r <= b; m3(2 OWNTO 0) <= "000"; p <= p_r; m_3: FOR i IN 6 OWNTO 3 GENERATE EN IF; m3(i) <= a_r(i-3) AN b_r(3); EN PROCESS Reg; EN GENERATE; m_3msb: FOR i IN 2*n-1 OWNTO 7 GENERATE m_0: FOR i IN 3 OWNTO 0 GENERATE m3(i) <= '0'; m0(i) <= a_r(i) AN b_r(0); EN GENERATE; EN GENERATE; m_0msb: FOR i IN 2*n-1 OWNTO 4 GENERATE csa0: csa m0(i) <= '0'; PORT MAP (a => m2, b => m1, cin => m0, EN GENERATE; s => s0, cout => c0); m1(0) <= '0'; c0_out <= c0(2*n-2 OWNTO 0) & '0'; m_1: FOR i IN 4 OWNTO 1 GENERATE csa1: csa m1(i) <= a_r(i-1) AN b_r(1); PORT MAP (a => m3, b => c0_out, cin => s0, EN GENERATE; s => s1, cout => c1); m_1msb: FOR i IN 2*n-1 OWNTO 5 GENERATE cpa_end: cpa m1(i) <= '0'; PORT MAP (s => s1, c => c1, p => p_r); EN GENERATE; EN mul_arch; 21
22 MnoŜenie CSA 4-bitowe Verilog // 4-bit multiplier (csa) module mul_csa(a,b,clk,p); parameter n=4; input clk; input [n-1:0] a,b; output [2*n-1:0] p; reg [2*n-1:0] p; reg [n-1:0] a_r, b_r; wire [2*n-1:0] p_r; wire [2*n-1:0] s0, s1; wire [2*n-1:0] c0, c0_out, c1; wire [2*n-1:0] m0, m1, m2, m3; clk) begin a_r <= a; b_r <= b; p <= p_r; end assign m0 = {4'b0000,a_r[3] & b_r[0],a_r[2] & b_r[0],a_r[1] & b_r[0],a_r[0] & b_r[0]}; assign m1 = {3'b000,a_r[3] & b_r[1],a_r[2] & b_r[1],a_r[1] & b_r[1],a_r[0] & b_r[1],1'b0}; assign m2 = {2'b00,a_r[3] & b_r[2],a_r[2] & b_r[2],a_r[1] & b_r[2],a_r[0] & b_r[2],2'b00}; assign m3 = {1'b0,a_r[3] & b_r[3],a_r[2] & b_r[3],a_r[1] & b_r[3],a_r[0] & b_r[3],3'b000}; csa csa0(.a(m2),.b(m1),.cin(m0),.s(s0),.cout(c0)); defparam csa0.n=2*n; assign c0_out = {c0[2*n-2:0],1'b0}; csa csa1(.a(m3),.b(c0_out),.cin(s0),.s(s1),.cout(c1)); defparam csa1.n=2*n; cpa cpa_end(.s(s1),.c(c1),.p(p_r)); endmodule 22
23 MnoŜenie CSA 4-bitowe Verilog clk) begin a_r <= a; b_r <= b; p <= p_r; end assign m0 = {4'b0000,a_r[3] & b_r[0],a_r[2] & b_r[0],a_r[1] & b_r[0],a_r[0] & b_r[0]}; assign m1 = {3'b000,a_r[3] & b_r[1],a_r[2] & b_r[1],a_r[1] & b_r[1],a_r[0] & b_r[1],1'b0}; assign m2 = {2'b00,a_r[3] & b_r[2],a_r[2] & b_r[2],a_r[1] & b_r[2],a_r[0] & b_r[2],2'b00}; assign m3 = {1'b0,a_r[3] & b_r[3],a_r[2] & b_r[3],a_r[1] & b_r[3],a_r[0] & b_r[3],3'b000}; csa csa0(.a(m2),.b(m1),.cin(m0),.s(s0),.cout(c0)); defparam csa0.n=2*n; assign c0_out = {c0[2*n-2:0],1'b0}; csa csa1(.a(m3),.b(c0_out),.cin(s0),.s(s1),.cout(c1)); defparam csa1.n=2*n; cpa cpa_end(.s(s1),.c(c1),.p(p_r)); endmodule 23
24 MnoŜenie CSA 4-bitowe komórek przerzutników f [Mz] t_clk [ns] ,46 28,2 24
25 MnoŜenie UT 4-bitowe MnoŜenie z wykorzystaniem pamięci UT (A(4 bity), B(4 bity)) * słowo P (8 bitów) = 2048 bitów latego pamięci EAB w Flex10K mają rozmiar 2048 bitów 25
26 MnoŜenie UT 4-bitowe -- 4x4 bit multiplication depth= 256; width = 8; address_radix = bin; data_radix = dec; content begin : 000 ; : 000 ; : 000 ; : 000 ; : 000 ; : 000 ; : 150 ; : 165 ; : 180 ; : 195 ; : 210 ; : 225 ; end; Plik konfiguracyjny pamięci UT: 4x4_mult.mif 26
27 MnoŜenie UT 4-bitowe V IBRARY ieee; USE ieee.std_logic_1164.a; PACKAGE ram_constants IS CONSTANT ATA_WIT : INTEGER := 8; CONSTANT AR_WIT : INTEGER := 8; EN ram_constants; IBRARY ieee; USE ieee.std_logic_1164.a; IBRARY lpm; USE lpm.lpm_components.a; IBRARY work; USE work.ram_constants.a; ENTITY mul_rom4b IS GENERIC (n : INTEGER := 4); PORT (a, b : IN ST_OGIC_VECTOR(n-1 OWNTO 0); clk : IN ST_OGIC; p : OUT ST_OGIC_VECTOR(2*n-1 OWNTO 0)); EN mul_rom4b; ARCITECTURE mul_arch OF mul_rom4b IS SIGNA address : ST_OGIC_VECTOR(2*n-1 OWNTO 0); BEGIN address <= a & b; rom4b: lpm_rom GENERIC MAP (PM_WIT => ATA_WIT, PM_WITA => AR_WIT, PM_FIE => "4x4_mult.mif", PM_ARESS_CONTRO => "REGISTERE", PM_OUTATA => "REGISTERE") PORT MAP (address => address, inclock => clk, outclock => clk, q => p); EN mul_arch; 27
28 MnoŜenie UT 4-bitowe Verilog // 4bit ROM-based multiplier module mul_rom4b(a,b,clk,p); parameter n=4; parameter data_width=2*n; parameter addr_width=2*n; input clk; input [n-1:0] a,b; output [2*n-1:0] p; reg [2*n-1:0] p; wire [2*n-1:0] address; assign address = {a, b}; lpm_rom rom4b(.address(address),.inclock(clk),.outclock(clk),.q(p)); defparam rom4b.lpm_width=data_width; defparam rom4b.lpm_widthad=addr_width; defparam rom4b.lpm_file="4x4_mult.mif"; defparam rom4b.lpm_address_control="registere"; defparam rom4b.lpm_outdata="registere"; endmodule; 28
29 MnoŜenie UT 4-bitowe pamięci EAB komórek przerzutników f [Mz] t_clk [ns] 1 (2048 bitów) ,34 13,1 29
30 MnoŜenie UT 8-bitowe MnoŜenie z wykorzystaniem pamięci UT 2kbit: P = A B = (A 1 2 n + A 0 ) (B 1 2 n + B 0 ) = A 1 B 1 2 2n + (A 1 B 0 + A 0 B 1 ) 2 n + A 0 B 0 30
31 MnoŜenie UT 8-bitowe V IBRARY ieee; USE ieee.std_logic_1164.a; PACKAGE ram_constants IS CONSTANT ATA_WIT : INTEGER := 8; CONSTANT AR_WIT : INTEGER := 8; EN ram_constants; IBRARY ieee; USE ieee.std_logic_1164.a; IBRARY lpm; USE lpm.lpm_components.a; IBRARY work; USE work.ram_constants.a; ENTITY mul_rom8b IS GENERIC (n : INTEGER := 8); PORT (a, b : IN ST_OGIC_VECTOR(n-1 OWNTO 0); clk : IN ST_OGIC; p : OUT ST_OGIC_VECTOR(2*n-1 OWNTO 0)); EN mul_rom8b; ARCITECTURE mul_arch OF mul_rom8b IS SIGNA address0, address1, address2, address3 : ST_OGIC_VECTOR(n-1 OWNTO 0); SIGNA p0, p1, p2, p3 : ST_OGIC_VECTOR(n-1 OWNTO 0); SIGNA s0, s1, s2, s3, s4, s5 : ST_OGIC_VECTOR((n+n/2-1) OWNTO 0); SIGNA s6, s7, p_r : ST_OGIC_VECTOR(2*n-1 OWNTO 0); 31
32 MnoŜenie UT 8-bitowe V BEGIN Reg: PROCESS (clk) BEGIN IF clk'event AN (clk = '1') TEN p <= p_r; EN IF; EN PROCESS Reg; address0 <= a(n/2-1 OWNTO 0) & b(n/2-1 OWNTO 0); address1 <= a(n/2-1 OWNTO 0) & b(n-1 OWNTO n/2); address2 <= a(n-1 OWNTO n/2) & b(n/2-1 OWNTO 0); address3 <= a(n-1 OWNTO n/2) & b(n-1 OWNTO n/2); rom4b_0: lpm_rom GENERIC MAP (PM_WIT => ATA_WIT, PM_WITA => AR_WIT, PM_FIE => "4x4_mult.mif", PM_ARESS_CONTRO => "REGISTERE", PM_OUTATA => "REGISTERE") PORT MAP (address => address0, inclock => clk, outclock => clk, q => p0); rom4b_1: lpm_rom GENERIC MAP (PM_WIT => ATA_WIT, PM_WITA => AR_WIT, PM_FIE => "4x4_mult.mif", PM_ARESS_CONTRO => "REGISTERE", PM_OUTATA => "REGISTERE") PORT MAP (address => address1, inclock => clk, outclock => clk, q => p1); rom4b_2: lpm_rom GENERIC MAP (PM_WIT => ATA_WIT, PM_WITA => AR_WIT, PM_FIE => "4x4_mult.mif", PM_ARESS_CONTRO => "REGISTERE", PM_OUTATA => "REGISTERE") dr inŝ. Paweł PORT Tomaszewicz MAP (address => address2, inclock => clk, outclock => clk, q => p2); 32
33 MnoŜenie UT 8-bitowe V rom4b_3: lpm_rom GENERIC MAP (PM_WIT => ATA_WIT, PM_WITA => AR_WIT, PM_FIE => "4x4_mult.mif", PM_ARESS_CONTRO => "REGISTERE", PM_OUTATA => "REGISTERE") PORT MAP (address => address3, inclock => clk, outclock => clk, q => p3); s0 <= "0000" & p0; s1 <= p1 & "0000"; sum0: lpm_add_sub GENERIC MAP (PM_WIT => 12, PM_REPRESENTATION => "UNSIGNE", PM_IRECTION => "A") PORT MAP (dataa => s0, datab => s1, result => s4); s2 <= "0000" & p2; s3 <= p3 & "0000"; sum1: lpm_add_sub GENERIC MAP (PM_WIT => 12, PM_REPRESENTATION => "UNSIGNE", PM_IRECTION => "A") PORT MAP (dataa => s2, datab => s3, result => s5); s6 <= "0000" & s4; s7 <= s5 & "0000"; sum2: lpm_add_sub GENERIC MAP (PM_WIT => 16, PM_REPRESENTATION => "UNSIGNE", PM_IRECTION => "A") PORT MAP (dataa => s6, datab => s7, result => p_r); EN mul_arch; 33
34 MnoŜenie UT 8-bitowe Verilog // 4bit ROM-based multiplier // P = X * Y = (Y2 * 2^N + Y1)*(X2 * 2^N + X1) // = Y2X2 * 2^2N + (Y2X1 + Y1X2)*2^N + Y1X1 module mul_rom8b(a,b,clk,p); parameter n=8; parameter data_width=8; parameter addr_width=8; input clk; input [n-1:0] a,b; output [2*n-1:0] p; reg [2*n-1:0] p; wire [n-1:0] address0,address1,address2,address3; wire [n-1:0] p0, p1, p2, p3; wire [n+n/2-1:0] s0, s1, s2, s3, s4, s5; wire [2*n-1:0] s6, s7, p_r; always@(posedge clk) begin p <= p_r; end 34
35 MnoŜenie UT 8-bitowe Verilog assign address0 = {a[n/2-1:0], b[n/2-1:0]}; assign address1 = {a[n/2-1:0], b[n-1:n/2]}; assign address2 = {a[n-1:n/2], b[n/2-1:0]}; assign address3 = {a[n-1:n/2], b[n-1:n/2]}; lpm_rom rom4b_0(.address(address0),.inclock(clk),.outclock(clk),.q(p0)); defparam rom4b_0.lpm_width=data_width; defparam rom4b_0.lpm_widthad=addr_width; defparam rom4b_0.lpm_file="4x4_mult.mif"; defparam rom4b_0.lpm_address_control="registere"; defparam rom4b_0.lpm_outdata="registere"; lpm_rom rom4b_1(.address(address1),.inclock(clk),.outclock(clk),.q(p1)); defparam rom4b_1.lpm_width=data_width; defparam rom4b_1.lpm_widthad=addr_width; defparam rom4b_1.lpm_file="4x4_mult.mif"; defparam rom4b_1.lpm_address_control="registere"; defparam rom4b_1.lpm_outdata="registere"; lpm_rom rom4b_2(.address(address2),.inclock(clk),.outclock(clk),.q(p2)); defparam rom4b_2.lpm_width=data_width; defparam rom4b_2.lpm_widthad=addr_width; defparam rom4b_2.lpm_file="4x4_mult.mif"; defparam rom4b_2.lpm_address_control="registere"; defparam rom4b_2.lpm_outdata="registere"; lpm_rom rom4b_3(.address(address3),.inclock(clk),.outclock(clk),.q(p3)); defparam rom4b_3.lpm_width=data_width; defparam rom4b_3.lpm_widthad=addr_width; defparam rom4b_3.lpm_file="4x4_mult.mif"; defparam rom4b_3.lpm_address_control="registere"; defparam rom4b_3.lpm_outdata="registere"; 35
36 MnoŜenie UT 8-bitowe Verilog assign s0 = {4'b0000, p0}; assign s1 = {p1, 4'b0000}; lpm_add_sub sum0(.dataa(s0),.datab(s1),.result(s4)); defparam sum0.lpm_width=12; defparam sum0.lpm_representation="unsigned"; defparam sum0.lpm_direction="add"; assign s2 = {4'b0000, p2}; assign s3 = {p3, 4'b0000}; lpm_add_sub sum1(.dataa(s2),.datab(s3),.result(s5)); defparam sum1.lpm_width=12; defparam sum1.lpm_representation="unsigned"; defparam sum1.lpm_direction="add"; assign s6 = {4'b0000, s4}; assign s7 = {s5, 4'b0000}; lpm_add_sub sum2(.dataa(s6),.datab(s7),.result(p_r)); defparam sum2.lpm_width=16; defparam sum2.lpm_representation="unsigned"; defparam sum2.lpm_direction="add"; endmodule 36
37 MnoŜenie UT 8-bitowe opcje kompilatora pamięci EAB komórek przerzutników f [Mz] t_clk [ns] pamięć UT z we/wy rejestrowymi z CarryChain 4 (8192 bity) ,31 26,1 bez CarryChain 4 (8192 bity) ,69 46,1 pamięć UT tylko z we rejestrowymi z CarryChain 4 (8192 bity) ,04 38,4 bez CarryChain 4 (8192 bity) ,06 58,6 Widać na tym przykładzie jaki wpływ ma stosowanie CARRY Chain! 37
38 Szybkie mnoŝenie FastArray macierzowe 8-bitowe W pierwszym kroku dodać dwa sąsiadujące czynniki a n B 2 n + a n+1 B 2 n+1 cpa_1shl.vhd cpa_2shl.vhd cpa_2.vhd cpa_4.vhd log 2 (N) poziomów N=8, 3 poziomy 38
39 MnoŜenie macierzowe 8-bitowe N-2 poziomów CSA N=8, 6+1 poziomów 39
40 MnoŜenie macierzowe 8bit drzewo Wallace a N=8, 4+1 poziomów Architektury typu Wallacetree, Booth są rzadko spotykane w FPGA (często uŝywane w układach ASIC) 40
41 MnoŜenie 8-bitowe potokowe vs kombinacyjne model komórek przerzutników stopni f [Mz] t_clk [ns] potoku fast ,5 33,9 CSA ,97 28,6 Wallace ,07 34,4 fast ,2 65,8 CSA ,06 66,4 Wallace ,23 61,6 W układzie Szybkiego MnoŜenia (Fast Array) dodanie potokowości nie kosztuje prawie Ŝadnych dodatkowych zasobów a przepustowość wzrosła dwukrotnie Układy moŝna by zoptymalizować (a szczególnie CSA) jeŝeli uwzględnimy fakt, Ŝe w cząstkowych iloczynach M połowa wektora wejściowego to są zera 41
42 IBRARY ieee; USE ieee.std_logic_1164.a; IBRARY lpm; USE lpm.lpm_components.a; ENTITY mul_lpm IS GENERIC (n : INTEGER := 8); PORT (a, b : IN ST_OGIC_VECTOR(n-1 OWNTO 0); clk EN mul_lpm; MnoŜenie 8-bitowe PM V : IN ST_OGIC; p : OUT ST_OGIC_VECTOR(2*n-1 OWNTO 0)); ARCITECTURE mul_arch OF mul_lpm IS BEGIN SIGNA a_r, b_r : ST_OGIC_VECTOR(n-1 OWNTO 0); SIGNA p_r : ST_OGIC_VECTOR(2*n-1 OWNTO 0); Reg: PROCESS (clk) BEGIN IF clk'event AN (clk = '1') TEN EN IF; EN PROCESS Reg; mul: lpm_mult a_r <= a; b_r <= b; p <= p_r; GENERIC MAP (PM_WITA => n, PM_WITB => n, PM_WITS => n, PM_WITP => 2*n, PM_PIPEINE => 3) PORT MAP (dataa => a_r, datab => b_r, result => p_r, clock => clk); EN mul_arch; 42
43 MnoŜenie 8-bitowe PM Verilog // 8-bit PM multiplier module mul_lpm(a,b,clk,p); parameter n=8; input clk; input [n-1:0] a,b; output [2*n-1:0] p; reg [n-1:0] a_r,b_r; reg [2*n-1:0] p; reg [2*n-1:0] p_r; clk) begin a_r <= a; b_r <= b; p <= p_r; end lpm_mult mult(.dataa(a_r),.datab(b_r),.result(p_r),.clock(clk)); defparam mult.lpm_widtha=n; defparam mult.lpm_widthb=n; defparam mult.lpm_widths=1; defparam mult.lpm_widthp=2*n; defparam mult.lpm_pipeline=1; endmodule 43
44 MnoŜenie 8-bitowe PM_MUT stopni potoku komórek przerzutników f [Mz] t_clk [ns] -* ,77 67, ,49 24, ,98 52, ,18 17, ,5 17, ,56 18,0 * wejścia/wyjścia rejestrowe Najlepsza realizacja (szybkość/zajętość) jest dla 3 stopni potoku. 44
Sumatory H D L. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska
Sumatory 1 Sumator 1-bitowy full adder Równanie boolowskie sumy: s k = a k XOR b k XOR c k = a k b k c k Równanie boolowskie przeniesienia: c k+1 = (a k AN b k ) OR (a k AN c k ) OR (b k AN c k ) = (a
Bardziej szczegółowoUkłady kryptograficzne z uŝyciem rejestrów LFSR
Układy kryptograficzne z uŝyciem rejestrów FSR Algorytmy kryptograficzne uŝywane w systemach telekomunikacyjnych własność modulo 2 funkcji XOR P K K = P = P 2 Rejestr z liniowym sprzęŝeniem zwrotnym FSR
Bardziej szczegółowoFiltry cyfrowe o skończonej odpowiedzi impulsowej FIR
Filtry cyfrowe o skończonej odpowiedzi impulsowej FIR 1 FPGA zalety i wady Ogromny wzrost wydajności niektórych algorytmów Elastyczność architektury MoŜliwości znacznego zrównoleglenia algorytmów ostosowanie
Bardziej szczegółowoJęzyk AHDL. Synteza strukturalna. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska H D L
Język A Synteza strukturalna 1 Synteza strukturalna icznik Rejestr B l o k i F u n k c j o n a l n e 1. Składamy układ z bloków funkcjonalnych 2. Odwzorowanie technologiczne 2 Komponent Wyboru odpowiedniej
Bardziej szczegółowoFiltry cyfrowe o skończonej odpowiedzi impulsowej FIR - realizacje
Filtry cyfrowe o skończonej odpowiedzi impulsowej FIR - realizacje wersja: 01.2015 1 FPGA zalety i wady Ogromny wzrost wydajności niektórych algorytmów Elastyczność architektury Możliwości znacznego zrównoleglenia
Bardziej szczegółowoSposoby projektowania systemów w cyfrowych
Sposoby projektowania systemów w cyfrowych Top-down Idea całości projektu Dekompozycja na mniejsze bloki Projekt i rafinacja podbloków Łączenie bloków w całość PRZYKŁAD (sumator kaskadowy) zdefiniowanie
Bardziej szczegółowoJęzyk HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS
Język HDL - VERLOG Hardware Description Language (Syntetyzowalna warstwa języka) RUS RUS VERLOG rzegląd zagadnień RUS RUS prowadzenie do języka Reprezentacja układu cyfrowego w Verilogu opis strukturalny
Bardziej szczegółowoProjektowanie Scalonych Systemów Wbudowanych VERILOG
Projektowanie Scalonych Systemów Wbudowanych VERILOG OPIS BEHAWIORALNY proces Proces wątek sterowania lub przetwarzania danych, niezależny w sensie czasu wykonania, ale komunikujący się z innymi procesami.
Bardziej szczegółowoProjektowanie Urządzeń Cyfrowych
Projektowanie Urządzeń Cyfrowych Laboratorium 2 Przykład prostego ALU Opracował: mgr inż. Leszek Ciopiński Wstęp: Magistrale: Program MAX+plus II umożliwia tworzenie magistral. Magistrale są to grupy przewodów
Bardziej szczegółowoUkłady reprogramowalne i SoC Implementacja w układach FPGA
Układy reprogramowalne i SoC Implementacja w układach FPGA Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez
Bardziej szczegółowoJęzyk HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS
Język HDL - VERLOG Hardware Description Language (Syntetyzowalna warstwa języka) RUS RUS Język VERLOG w praktyce RUS RUS VERLOG Specyfikacja układów kombinacyjnych RUS RUS Operator warunkowy Conditional_expression?
Bardziej szczegółowoPUCY Kolos 2: Reloaded
PUCY Kolos 2: Reloaded 1) Narysować schemat układu mikroprogramowalnego z licznikiem rozkazów. 2) Narysować schemat elementu ścieżki cyklicznej dla sygnału kombinacyjnego 3) Narysować schemat elementu
Bardziej szczegółowoArchitektura systemów komputerowych. Poziom układów logicznych. Układy mnoŝące i dzielące
Architektura systemów komputerowych Poziom układów logicznych. Układy mnoŝące i dzielące Cezary Bolek Katedra Informatyki Plan wykładu Układy mnoŝące liczby całkowite MnoŜenie liczb bez znaku MnoŜarka
Bardziej szczegółowoProgramowalne układy logiczne kod kursu: ETD Podstawy języka Verilog W
Programowalne układy logiczne kod kursu: ETD008270 Podstawy języka Verilog W2 2.03.2018 mgr inż. Maciej Rudek 2 Tematyka kursu wykład Poziom abstrakcji systemów opisu sprzętu Historia Verilog został stworzony
Bardziej szczegółowoProjekt prostego procesora
Projekt prostego procesora Opracowany przez Rafała Walkowiaka dla zajęć z PTC 2012/2013 w oparciu o Laboratory Exercise 9 Altera Corporation Rysunek 1 przedstawia schemat układu cyfrowego stanowiącego
Bardziej szczegółowoUkłady cyfrowe w Verilog HDL. Elementy języka z przykładami. wersja: cz.3
Układy cyfrowe w Verilog Elementy języka z przykładami wersja: 10.2009 cz.3 1 Układy sekwencyjne Układy sekwencyjne mają pamięć Układy synchroniczne najczęściej spotykane wszystkie elementy są kontrolowane
Bardziej szczegółowoArchitektura komputerów, Informatyka, sem.iii. Sumatory
Sumatory Architektury sumatorów (zarys) Sumatory 1-bitowe Sumatory z propagacją Przeniesień CPA (Carry Propagate Adders) Sumatory wieloargumentowe 3-argumentowe Half Adder HA Macierz sumatorów RCA Full
Bardziej szczegółowoSpecyfika projektowania Mariusz Rawski
CAD Specyfika projektowania Mariusz Rawski rawski@tele.pw.edu.pl http://rawski.zpt.tele.pw.edu.pl/ System cyfrowy pierwsze skojarzenie Urządzenia wprowadzania danych: klawiatury czytniki urządzenia przetwarzania
Bardziej szczegółowoAltera Quartus II. Opis niektórych komponentów dostarczanych razem ze środowiskiem. Opracował: mgr inż. Leszek Ciopiński
Altera Quartus II Opis niektórych komponentów dostarczanych razem ze środowiskiem Opracował: mgr inż. Leszek Ciopiński Spis treści Opis wybranych zagadnień obsługi środowiska Altera Quartus II:...1 Magistrale:...
Bardziej szczegółowoLaboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje.
Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje. 1. W języku VHDL zdefiniowano mechanizm odczytywania i zapisywania danych z i do plików. Pliki te mogą być wykorzystywane
Bardziej szczegółowoPlan wykładu. Architektura systemów komputerowych. MnoŜenie realizacja sprzętowa (wersja 1) Układy mnoŝące liczby całkowite.
Plan wykładu rchitektura systemów komputerowych Poziom układów logicznych. Układy mnoŝące i dzielące Cezary Bolek Katedra Informatyki Układy mnoŝące liczby całkowite MnoŜenie liczb bez znaku MnoŜarka sekwencyjna
Bardziej szczegółowoKrótkie wprowadzenie do ModelSim i Quartus2
Krótkie wprowadzenie do ModelSim i Quartus2 wersja 04.2011 1 Plan Oprogramowanie Pliki źródłowe Scenariusze użycia 2 Programy Programy w wersji darmowej do pobrania ze strony www.altera.com ModelSim-Altera
Bardziej szczegółowoLaboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza
Laboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza Projektowanie układów VLSI-ASIC za pomocą techniki komórek standardowych przy użyciu pakietu Cadence Programowanie,
Bardziej szczegółowoTechnika cyfrowa projekt: Sumator 4 bitowy równoległy
Technika cyfrowa projekt: Sumator 4 bitowy równoległy Autorzy: Paweł Bara Robert Boczek Przebieg prac projektowych: Zadany układ dostaje na wejściu dwie czterobitowe liczby naturalne, sumuje je, po czym
Bardziej szczegółowo(przykład uogólniony)
Serial Peripheral Interface (przykład uogólniony) Brak standardu. Inne stosowane nazwy: Synchronous Serial Port (SSP), 4 wire SSI (Synchronous Serial Interface, Texas Instrument), Microwire (National Semiconductor).
Bardziej szczegółowoVHDL. Zebrał i opracował R.Walkowiak PTC wykład 2013/2014
VHDL przykłady rozwiązań Zebrał i opracował R.Walkowiak PTC wykład 2013/2014 for generate Tworzenie wektora obiektów : for in generate -- wyrażenia równoległe end
Bardziej szczegółowoPodział sumatorów. Równoległe: Szeregowe (układy sekwencyjne) Z przeniesieniem szeregowym Z przeniesieniem równoległym. Zwykłe Akumulujące
Podział sumatorów Równoległe: Z przeniesieniem szeregowym Z przeniesieniem równoległym Szeregowe (układy sekwencyjne) Zwykłe Akumulujące 1 Sumator z przeniesieniami równoległymi G i - Warunek generacji
Bardziej szczegółowoCyfrowe przetwarzanie sygnałów Mariusz Rawski
CAD Cyfrowe przetwarzanie sygnałów Mariusz Rawski rawski@tele.pw.edu.pl http://rawski.zpt.tele.pw.edu.pl/ Cyfrowe przetwarzanie sygnału A/D konwersja sygnału analogowego na cyfrowy (próbkowanie, kwantyzacja,
Bardziej szczegółowoUkłady reprogramowalne i SoC Język VHDL (część 3)
Układy reprogramowalne i SoC Język VHDL (część 3) Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń
Bardziej szczegółowoModelowanie złożonych układów cyfrowych (1)
Modelowanie złożonych układów cyfrowych () funkcje i procedury przykłady (przerzutniki, rejestry) style programowania kombinacyjne bloki funkcjonalne bufory trójstanowe multipleksery kodery priorytetowe
Bardziej szczegółowoUkłady reprogramowalne i SoC Specjalizowane moduły FPGA
Specjalizowane moduły FPGA Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój
Bardziej szczegółowoUkłady reprogramowalne i SoC Język VHDL (część 4)
Język VHDL (część 4) Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki
Bardziej szczegółowo1. ISE WebPack i VHDL Xilinx ISE Design Suite 10.1 VHDL Tworzenie projektu Project Navigator Xilinx ISE Design Suite 10.1 File
1. ISE WebPack i VHDL Celem ćwiczenia jest szybkie zaznajomienie się ze środowiskiem projektowym Xilinx ISE Design Suite 10.1 oraz językiem opisu sprzętu VHDL. Tworzenie projektu Uruchom program Project
Bardziej szczegółowoSystemy wbudowane. Projektowanie systemów wbudowanych na bazie układów CPLD/FPGA Język opisu sprzętu Verilog cz.1
Systemy wbudowane Projektowanie systemów wbudowanych na bazie układów CPLD/FPGA Język opisu sprzętu Verilog cz.1 System Quartus II Opis projektu Tekstowy (język opisu sprzętu np. Verilog) Graficzny Wykresy
Bardziej szczegółowoWykład 4. Języki Opisu Sprzętu
Języki Opisu Sprzętu Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D-10 222, tel. w. 28-72, e-mail: skoczen@fis.agh.edu.pl Wprowadzenie do Veriloga Przypisania proceduralne (c. d.) Wykład 4 2017 8 listopad
Bardziej szczegółowoUkłady sekwencyjne. Wstęp doinformatyki. Zegary. Układy sekwencyjne. Automaty sekwencyjne. Element pamięciowy. Układy logiczne komputerów
Wstęp doinformatyki Układy sekwencyjne Układy logiczne komputerów Układy sekwencyjne Dr inż. Ignacy Pardyka Akademia Świętokrzyska Kielce, 2001 Wstęp do informatyki I. Pardyka Akademia Świętokrzyska Kielce,
Bardziej szczegółowoTechnika cyfrowa Układy arytmetyczne
Sławomir Kulesza Technika cyfrowa Układy arytmetyczne Wykład dla studentów III roku Informatyki Wersja 1.0, 05/10/2010 Układy arytmetyczne UKŁADY ARYTMETYCZNE UKŁADY SUMUJĄCE i ODEJMUJĄCE UKŁADY MNOŻĄCE
Bardziej szczegółowoProgramowalne układy logiczne kod kursu: ETD Układy kombinacyjne, przypisania, blokujące i nieblokujące cz.2 W
Programowalne układy logiczne kod kursu: ETD008270 Układy kombinacyjne, przypisania, blokujące i nieblokujące cz.2 W4 23.03.2018 mgr inż. Maciej Rudek UKŁADY KOMBINACYJNE Układy kombinacyjne Układ kombinacyjny
Bardziej szczegółowoUkłady arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011
Układy arytmetyczne Joanna Ledzińska III rok EiT AGH 2011 Plan prezentacji Metody zapisu liczb ze znakiem Układy arytmetyczne: Układy dodające Półsumator Pełny sumator Półsubtraktor Pełny subtraktor Układy
Bardziej szczegółowoProgramowalne układy logiczne
Programowalne układy logiczne Układy kombinacyjne Szymon Acedański Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 28 września 2015 Co to jest układ kombinacyjny? Stan wyjść zależy tylko
Bardziej szczegółowoProgramowanie Układów Logicznych kod kursu: ETD6203 W dr inż. Daniel Kopiec. Pamięć w układach programowalnych
Programowanie Układów Logicznych kod kursu: ETD623 Pamięć w układach programowalnych W6 6.4.26 dr inż. Daniel Kopiec Plan wykładu Pamięć w układach programowalnych Zasada działania, podział pamięci Miara
Bardziej szczegółowoWykład 3. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w ,
Języki Opisu Sprzętu Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D-10 222, tel. w. 28-72, e-mail: skoczen@fis.agh.edu.pl Tablice i wektory Reguły łączenia portów Wykład 3 2018 10 październik 2018
Bardziej szczegółowoWykład 2. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w ,
Języki Opisu Sprzętu Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D-10 222, tel. w. 28-72, e-mail: skoczen@fis.agh.edu.pl Dwa oblicza systemu cyfrowego Opcje projektowe dla systemu cyfrowego Wykład
Bardziej szczegółowoWydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: PROGRAMOWALNE STRUKTURY LOGICZNE
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: PROGRAMOWALNE STRUKTURY LOGICZNE ES1C420 300 Ćwiczenie Nr 8 KONFIGUROWALNE
Bardziej szczegółowo1 Wstęp. 2 Proste przykłady. 3 Podstawowe elementy leksykalne i typy danych. 6 Opis strukturalny. 7 Moduł testowy (testbench)
Wstęp SYSTEMY WBUDOWANE Układy kombinacyjne c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012
Bardziej szczegółowoLABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35
LABORATORIUM TECHNIKA CYFROWA Pamięci Rev.1.35 1. Cel ćwiczenia Praktyczna weryfikacja wiedzy teoretycznej z projektowania modułów sterowania oraz kontroli pamięci 2. Kolokwium Kolokwium wstępne sprawdzające
Bardziej szczegółowoJęzyk VERILOG w praktyce
Język VERLOG w praktyce RUS RUS Język VERLOG rzykłady syntezy blokowej RUS RUS Elementy systemu cyfrowego magistrala danych cd. module swap (Data, Resetn, w, Clock, Extern, RinExt, Busires); input [7:0]
Bardziej szczegółowoSzybkie układy mnożące
Szybkie układy mnożące Operacja mnożenia Operacje dodawania i mnożenia są podstawą algorytmów obliczania wartości innych złożonych funkcji matematycznych oraz przetwarzania sygnałów Implementacje bitowo-szeregowe
Bardziej szczegółowoProjektowanie automatów z użyciem VHDL
Projektowanie automatów z użyciem VHDL struktura automatu i jego modelu w VHDL przerzutnik T jako automat przykłady automatów z wyjściami typu: Moore'a Mealy stanu kodowanie stanów automatu Wykorzystano
Bardziej szczegółowoLaboratorium Podstaw Techniki Cyfrowej
Laboratorium Podstaw Techniki Cyfrowej Ćwiczenie 5: Wprowadzenie do języków opisu sprzętu 1. Języki opisu sprzętu Języki opisu sprzętu(hdl Hardware Description Language) to języki słuŝące do opisu układów
Bardziej szczegółowoUkłady reprogramowalne i SoC Testbenches. Symulacja sterowana zdarzeniami.
Testbenches. Symulacja sterowana zdarzeniami. Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń -
Bardziej szczegółowoSzybkie układy mnożące
Szybkie układy mnożące Operacja mnożenia Operacje dodawania i mnożenia są podstawą algorytmów obliczania wartości innych złożonych funkcji matematycznych oraz przetwarzania sygnałów Implementacje bitowo-szeregowe
Bardziej szczegółowoXC4000: LUT jako ROM Układy Cyfrowe i Systemy Wbudowane 2 Układy FPGA cz. 2 ROM32X1 VHDL inference example ROM 16x2b type
Układy Cyfrowe i Systemy Wbudowane 2 XC4000: LUT jako ROM Układy FPGA cz. 2 dr inż. Jarosław Sugier Jaroslaw.Sugier@pwr.edu.pl W-4/K-9, pok. 227 C-3 FPGA(2) - 1 FPGA(2) - 2 ROM32X1 VHDL inference example
Bardziej szczegółowoProjektowanie w VHDL
Projektowanie w VHDL powtórka wiadomości o języku VHDL słowa zastrzeżone typy danych, deklaracje obiektów instrukcje współbieżne i sekwencyjne pętle for, while typowe bloki układów cyfrowych przykłady
Bardziej szczegółowoPracownia elektryczna i elektroniczna. Elektronika cyfrowa. Ćwiczenie nr 5.
Pracownia elektryczna i elektroniczna. Elektronika cyfrowa. Ćwiczenie nr 5. Klasa III Opracuj projekt realizacji prac związanych z badaniem działania cyfrowych bloków arytmetycznych realizujących operacje
Bardziej szczegółowoUkłady FPGA w przykładach, część 2
Układy FPGA w przykładach, część 2 W drugiej części artykułu zajmiemy się omówieniem wyposażenia (po mikrokontrolerowemu : peryferiów) układów FPGA z rodziny Spartan 3, co ułatwi ich wykorzystywanie w
Bardziej szczegółowoPrzykładowe pytania z części PSPICE. 1. Podaj zasady tworzenia pliku symulacyjnego. 2. Czy składnia PSPICE jest czuła na wielkość liter? 3.
Przykładowe pytania z części PSPICE. 1. Podaj zasady tworzenia pliku symulacyjnego. 2. Czy składnia PSPICE jest czuła na wielkość liter? 3. Jak umieszcza się komentarze w pliku symulacyjnym PSPICE? 4.
Bardziej szczegółowoInstrukcje sekwencyjne
nstrukcje sekwencyjne nstrukcje sekwencyjne są stosowane w specyfikacji behawioralnej (behavioral description) rzede wszystkim w tzw. procesach (process) roces nstrukcja F nstrukcja CASE Z 1 rocesy Konstrukcja
Bardziej szczegółowoPolitechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 7 (2h) Obsługa urządzenia peryferyjnego z użyciem pamięci w VHDL. Instrukcja do zajęć laboratoryjnych z przedmiotu
Bardziej szczegółowoUkłady kombinacyjne 1
Układy kombinacyjne 1 Układy kombinacyjne są to układy cyfrowe, których stany wyjść są zawsze jednoznacznie określone przez stany wejść. Oznacza to, że doprowadzając na wejścia tych układów określoną kombinację
Bardziej szczegółowoProgramowanie Układów Logicznych kod kursu: ETD6203. VHDL, ISE WebPACK, Plan Ahead, Impact W
Programowanie Układów Logicznych kod kursu: ETD6203 VHDL, ISE WebPACK, Plan Ahead, Impact W2 28.02.2018 mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec Plan wykładu 1 2 3 4 5 6 VHDL powtórka ważniejszych
Bardziej szczegółowoVHDL. Behawioralny Strukturalny Czasowy. Poziom RTL
Style opisu VHDL VHDL Behawioralny Strukturalny Czasowy Równania boolowskie Poziom RTL Przebieg czasowy c = a v b c
Bardziej szczegółowoProjektowanie hierarchiczne Mariusz Rawski
CAD Projektowanie hierarchiczne rawski@tele.pw.edu.pl http://rawski.zpt.tele.pw.edu.pl/ Zamek elektroniczny: Elektroniczny zamek kod 4 cyfrowy kod wprowadzony z klawiatury ready sygnalizacja gotowości
Bardziej szczegółowoSystemy Czasu Rzeczywistego FPGA
01. Systemy Czasu Rzeczywistego FPGA 1 Systemy Czasu Rzeczywistego FPGA laboratorium: 03 autor: mgr inż. Mateusz Baran 01. Systemy Czasu Rzeczywistego FPGA 2 1 Spis treści FPGA... 1 1 Spis treści... 2
Bardziej szczegółowoVHDL cz.1. Rafał Walkowiak IIn PP Wer
VHDL cz.1 Rafał Walkowiak IIn PP Wer 2.0 11.2013 VHDL VHDL (ang. Very High Speed Integrated Circuits Hardware Description Language ) jest popularnym językiem opisu sprzętu używanym w komputerowym projektowaniu
Bardziej szczegółowoUkłady logiczne układy cyfrowe
Układy logiczne układy cyfrowe Jak projektować układy cyfrowe (systemy cyfrowe) Układy arytmetyki rozproszonej filtrów cyfrowych Układy kryptograficzne X Selektor ROM ROM AND Specjalizowane układy cyfrowe
Bardziej szczegółowoWydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYNTEZA UKŁADÓW CYFROWYCH ES2D100005
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYNTEZA UKŁADÓW CYFROWYCH ES2D100005 Ćwiczenie Nr 8 Implementacja prostego
Bardziej szczegółowoPrzykłady do wykładu Języki modelowania i symulacji
Przykłady do wykładu Języki modelowania i symulacji dr inż. Bogdan Pankiewicz Gdańsk, listopad 2011 - grudzień 2015 Część I - PSPICE Przykład I - przerzutnik D Czynności do wykonania: Wprowadzenie opisu
Bardziej szczegółowoSystemy Czasu Rzeczywistego FPGA
01. Systemy Czasu Rzeczywistego FPGA 1 Systemy Czasu Rzeczywistego FPGA laboratorium: 05 autor: mgr inż. Mateusz Baran 01. Systemy Czasu Rzeczywistego FPGA 2 1 Spis treści FPGA... 1 1 Spis treści... 2
Bardziej szczegółowoRealizacja algorytmu wyznaczania wyrazów ciągu w języku VHDL z zastosowaniem podziału projektu na moduły: FSM i Data Path.
Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska, 2015. 1 Układy Cyfrowe laboratorium Przykład realizacji ćwiczenia nr 6 (wersja 2015) 1. Wstęp 1.1. Algorytm Realizacja algorytmu
Bardziej szczegółowoAby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.
Generowanie sygnałów testowych VHDL Wariant współbieżny (bez procesu): sygnał
Bardziej szczegółowoElementy języka VHDL. obiekty typy danych atrybuty pakiety i biblioteki instrukcje współbieżne instrukcje sekwencyjne. PUE-w3 1
Elementy języka VHDL obiekty typy danych atrybuty pakiety i biblioteki instrukcje współbieżne instrukcje sekwencyjne PUE-w3 1 Obiekty (sygnały, zmienne, stałe, pliki) Obiekty służą do zapisu i pamiętania
Bardziej szczegółowoPolitechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL Instrukcja pomocnicza do laboratorium z przedmiotu Synteza układów
Bardziej szczegółowoPojedyncze wartości zadeklarowanego typu Ustawiane przed rozpoczęciem symulacji bez moŝliwości
Stałe - constant Pojedyncze wartości zadeklarowanego typu Ustawiane przed rozpoczęciem symulacji bez moŝliwości późniejszych zmian Deklarowane w ciele architektury Widoczne dla całej architektury architecture
Bardziej szczegółowoModelowanie liczników w języku Verilog i ich implementacja w strukturze FPGA
Modelowanie liczników w języku Verilog i ich implementacja w strukturze FPGA Licznik binarny Licznik binarny jest najprostszym i najpojemniejszym licznikiem. Kod 4 bitowego synchronicznego licznika binarnego
Bardziej szczegółowoUkłady reprogramowalne i SoC Język VHDL (część 5)
Układy reprogramowalne i SoC Język VHDL (część 5) Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń
Bardziej szczegółowoVerilog HDL. Język Opisu Sprzętu Hardware Description Language Część I. Elementy języka. dr inż. Paweł Tomaszewicz H D L
Verilog Język Opisu Sprzętu ardware escription anguage Część I. Elementy języka dr inż. Paweł Tomaszewicz 1 istoria krótko ata '80 potrzeba stworzenia jednego języka do symulacji na różnych poziomach opisu
Bardziej szczegółowoProjektowanie hierarchiczne Mariusz Rawski
CAD Projektowanie hierarchiczne rawski@tele.pw.edu.pl http://rawski.zpt.tele.pw.edu.pl/ Zamek elektroniczny: Elektroniczny zamek kod 4 cyfrowy kod wprowadzony z klawiatury ready sygnalizacja gotowości
Bardziej szczegółowoUkład sterowania 4-cyfrowym wyświetlaczem 7-segmentowym LED
Język Verilog w przykładach (2) Dodatkowe materiały na CD Układ sterowania 4-cyfrowym wyświetlaczem 7-segmentowym LED W tej części kursu opiszemy bloki funkcjonalne układu sterowania 4-cyfrowym wyświetlaczem
Bardziej szczegółowoMetoda Newtona przyjmuje następujące założenia dla funkcji :
Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska, 2015. 1 Układy Cyfrowe laboratorium Przykład realizacji ćwiczenia nr 5 wersja 2015) 1. Temat Realizacja iteracyjnego algorytmu
Bardziej szczegółowoĆwiczenie 27 Temat: Układy komparatorów oraz układy sumujące i odejmujące i układy sumatorów połówkowych i pełnych. Cel ćwiczenia
Ćwiczenie 27 Temat: Układy komparatorów oraz układy sumujące i odejmujące i układy sumatorów połówkowych i pełnych. Cel ćwiczenia Poznanie zasad budowy działania komparatorów cyfrowych. Konstruowanie komparatorów
Bardziej szczegółowoProjektowanie układów VLSI-ASIC techniką od ogółu do szczegółu (top-down) przy użyciu pakietu CADENCE
Katedra Elektroniki Akademia Górniczo-Hutnicza w Krakowie Projektowanie układów VLSI-ASIC techniką od ogółu do szczegółu (top-down) przy użyciu pakietu CADENCE opis układu w Verilog, kompilacja i symulacja
Bardziej szczegółowoProjektowanie scalonych systemów wbudowanych VERILOG. VERLIOG - historia
Projektowanie scalonych systemów wbudowanych VERILOG VERLIOG - historia Początki lat 80 XX w. Phil Moorby Gateway Design Automation symulator Verilog XL 1987 Synopsys Verilog jako język specyfikacji projektu
Bardziej szczegółowoProcesory w FPGA H D L. dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska
Procesory w FPGA 1 System w FPGA SOPC - System on a Programmable Chip System mikroprocesorowy w układzie programowalnym: softprocesor zrealizowany w logice układu FPGA NIOS2 Altera Microblaze Xilinx OpenRISC
Bardziej szczegółowoElementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.
Elementy struktur cyfrowych Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych. Magistrale W układzie bank rejestrów do przechowywania danych. Wybór źródła danych
Bardziej szczegółowoSiła (w) pamięci on-chip Implementacje pamięci w układach Cyclone IV firmy Altera
PODZESPOŁY Siła (w) pamięci on-chip Implementacje pamięci w układach Cyclone IV firmy Altera Dodatkowe materiały na CD i FTP Jedną ze sztandarowych cech współczesnych układów FPGA jest możliwość implementacji
Bardziej szczegółowo1 Wstęp. 2 Operatory. 3 Blok always dla układów kombinacyjnych. 4 Instrukcja IF. 5 Instrukcja CASE. 6 Struktury konstrukcji warunkowych
Wstęp PROGRAMOWANIE STRUTUR CYFROWYCH Układy kombinacyjne poziomu RT c Dr inż. Ignacy Pardyka UNIWERSYTET JANA OCHANOWSIEGO w ielcach 1 Rok akad. 2013/2014 2 1 Instytut Fizyki, Zakład Informatyki, e-mail:
Bardziej szczegółowoKierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe. Zaawansowany VHDL. Rajda & Kasperek 2014 Katedra Elektroniki AGH 2
Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe Zaawansowany VHDL Rajda & Kasperek 2014 Katedra Elektroniki AGH 1 Program wykładu Opis strukturalny map, generate Pojęcia leksykalne
Bardziej szczegółowoSystemy Czasu Rzeczywistego FPGA
01. Systemy Czasu Rzeczywistego FPGA 1 Systemy Czasu Rzeczywistego FPGA laboratorium: 04 autor: mgr inż. Mateusz Baran 01. Systemy Czasu Rzeczywistego FPGA 2 1 Spis treści FPGA... 1 1 Spis treści... 2
Bardziej szczegółowoJęzyki projektowania HDL
Języki projektowania HDL Wykład dr inż. Marek Wójcikowski Ver: 2015-03-11 1 Zasady zaliczenia Wykład 2 kolokwia: 22.5+22.5 punktów=45 punktów Obecność na wykładzie 5 punktów Laboratorium 50 punktów Warunek
Bardziej szczegółowoJęzyk Verilog w projektowaniu układów FPGA
POLITECHNIKA ZIELONOGÓRSKA Wydział Elektryczny Język Verilog w projektowaniu układów FPGA Jacek Bieganowski Grzegorz Wawrzyniak Promotor: dr inż. Marek Węgrzyn Zielona Góra, czerwiec 2001 Spis treści 1.
Bardziej szczegółowoProjektowanie Scalonych Systemów Wbudowanych VERILOG
Projektowanie Scalonych Systemów Wbudowanych VERILOG VERLIOG - historia Początki lat 80 XX w. Phil Moorby Gateway Design Automation symulator Verilog XL 1987 Synopsys Verilog jako język specyfikacji projektu
Bardziej szczegółowoProjektowanie Scalonych Systemów Wbudowanych VERILOG
Projektowanie Scalonych Systemów Wbudowanych VERILOG VERLIOG - historia Początki lat 80 XX w. Phil Moorby Gateway Design Automation symulator Verilog XL 1987 Synopsys Verilog jako język specyfikacji projektu
Bardziej szczegółowoUkłady logiczne układy cyfrowe
Układy logiczne układy cyfrowe Jak projektować układy cyfrowe (systemy cyfrowe) Układy arytmetyki rozproszonej filtrów cyfrowych Układy kryptograficzne Evatronix KontrolerEthernet MAC (Media Access Control)
Bardziej szczegółowoProgramowanie równoległe
Programowanie równoległe ELEMENTARNE ALGORYTMY (PODSTAWA: Z.CZECH. WPROWADZENIE DO OBLICZEŃ RÓWNOLEGŁYCH. PWN, 2010) Andrzej Baran baran@kft.umcs.lublin.pl Charakterystyka ilościowa algorytmów Przez algorytm
Bardziej szczegółowoJęzyki projektowania HDL
Języki projektowania HDL Wykład dr hab. inż. Marek Wójcikowski Ver: 2019-02-22 1 Zasady zaliczenia Wykład 2 kolokwia: 25+25 punktów=50 punktów Obecność na wykładzie +5 punktów Laboratorium 50 punktów (kierunkowy
Bardziej szczegółowoArchitektura komputerów Wykład 2
Architektura komputerów Wykład 2 Jan Kazimirski 1 Elementy techniki cyfrowej 2 Plan wykładu Algebra Boole'a Podstawowe układy cyfrowe bramki Układy kombinacyjne Układy sekwencyjne 3 Algebra Boole'a Stosowana
Bardziej szczegółowoElementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.
Elementy struktur cyfrowych Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych. Magistrale W układzie bank rejestrów służy do przechowywania danych. Wybór źródła
Bardziej szczegółowoMacierzowe algorytmy równoległe
Macierzowe algorytmy równoległe Zanim przedstawimy te algorytmy zapoznajmy się z metodami dekompozycji macierzy, możemy wyróżnić dwa sposoby dekompozycji macierzy: Dekompozycja paskowa - kolumnowa, wierszowa
Bardziej szczegółowoĆwiczenie 01 - Strona nr 1 ĆWICZENIE 01
ĆWICZENIE 01 Ćwiczenie 01 - Strona nr 1 Polecenie: Bez użycia narzędzi elektronicznych oraz informatycznych, wykonaj konwersje liczb z jednego systemu liczbowego (BIN, OCT, DEC, HEX) do drugiego systemu
Bardziej szczegółowo