Merhaba, internette arattım ama bişey bulamadım. Elinde fpga için hesap makinesi şematiği olan varmı ?
hesap makinası dediğin ne arkadaş
mantık kapılarıyla basit 8 bitlik toplayıcı
https://www.google.com.tr/?gfe_rd=cr&ei=r8lrU7WuKaKG8QfExYHwAQ#q=Full+ADder (https://www.google.com.tr/?gfe_rd=cr&ei=r8lrU7WuKaKG8QfExYHwAQ#q=Full+ADder)
Burdan faydalanabilirsin.
1 bitlik örmnek
(http://s9.postimg.cc/yt4c0bo0r/9941_o.jpg) (http://postimg.cc/image/yt4c0bo0r/)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity full_adder is
Port ( X : in STD_LOGIC;
Y : in STD_LOGIC;
Z : in STD_LOGIC;
SUM : out STD_LOGIC;
CARRY : out STD_LOGIC);
end full_adder;
architecture Behavioral of full_adder is
COMPONENT half_adder
PORT( A : IN std_logic;
B : IN std_logic;
Sum : OUT std_logic;
Carry : OUT std_logic );
END COMPONENT;
signal carry1,carry2,sum1:STD_LOGIC;
begin
Half_Adder_1: half_adder PORT MAP( A => X, B => Y, Sum => sum1 ,Carry => carry1 );
Half_Adder_2: half_adder PORT MAP( A => sum1, B => Z, Sum =>SUM , Carry =>carry2 );
CARRY<=carry1 OR carry2;
end Behavioral;
full adder tasarımını biliyorum. Benim elimde 10 tane switch var. ilk swtchleri verip butona basacam sonra o switchler ikinci sayıyı girmek için ayarlacam.
Pardon ben yanlış anlamışım. Sen ALU dan bahsediyormuşsun.
full adder tasarımın bilmeden
mantık kapılarıyla nasıl adder tasarlıyacan.
önce bi logic öğrenin
sonra rtl öğrenin
rtlde temel işleri isterseniz sentezleyici yapar isterseniz siz yaparsınız.
Alıntı yapılan: speak48 - 09 Mayıs 2014, 15:33:39
full adder tasarımın bilmeden
mantık kapılarıyla nasıl adder tasarlıyacan.
önce bi logic öğrenin
sonra rtl öğrenin
rtlde temel işleri isterseniz sentezleyici yapar isterseniz siz yaparsınız.
full adder tasarımını biliyorum, basit düzeyde logic biliyorum, rtl hakkında da bilgi sahibiyim ve rtl seviyesinde tasarım yaptım.
elimde 10 switch var. daha önceden 5 bitlik bir hesap makinesi yaptım. fakat istediğim bu 10 tane switch'i full adderin her iki girişinede bağlamak. butona basıldığında A bacakları pasif b bacakları aktif olacak. bunu istiyorum sadece
input [9:0] switch;
wire [4:0] alu_in_a;
wire [4:0] alu_in_b;
assign alu_in_a=switch[4:0];
assign alu_in_b=switch[9:5];
10 biti ikitane 5 bit girişe bölüştürecen işte
Alıntı yapılan: speak48 - 10 Mayıs 2014, 12:44:07
input [9:0] switch;
wire [4:0] alu_in_a;
wire [4:0] alu_in_b;
assign alu_in_a=switch[4:0];
assign alu_in_b=switch[9:5];
10 biti ikitane 5 bit girişe bölüştürecen işte
Bunu yaptım zaten. benim istediğim 10 tane fulladder tasarlayıp bu on switch'i A ve B girişlerine bağlamak. Bir buton yardımı ile de A girişlerini pasif hale getirip B girişlerini aktif etmek.
buradan sizin dediğinize çevirmek sizin rtl tasarımınıza kalmış .
input [9:0] switch;
input [1:0] button.;
reg [9:0] alu_in_a;
reg [9:0] alu_in_b;
always@(posedge clk)
begin
case(button)
0:alu_in_a<=alu_in_a; alu_in_b<=alu_in_b;
1:alu_in_a<=switch; alu_in_b<=alu_in_b;
2:alu_in_a<=alu_in_a; alu_in_b<=switch;
3:alu_in_a<=alu_in_a; alu_in_b<=alu_in_b;
end
Alıntı yapılan: speak48 - 10 Mayıs 2014, 13:38:08
buradan sizin dediğinize çevirmek sizin rtl tasarımınıza kalmış .
input [9:0] switch;
input [1:0] button.;
reg [9:0] alu_in_a;
reg [9:0] alu_in_b;
always@(posedge clk)
begin
case(button)
0:alu_in_a<=alu_in_a; alu_in_b<=alu_in_b;
1:alu_in_a<=switch; alu_in_b<=alu_in_b;
2:alu_in_a<=alu_in_a; alu_in_b<=switch;
3:alu_in_a<=alu_in_a; alu_in_b<=alu_in_b;
end
Fakat ben VHDL ile hiç çalışmadım. Verilog hakkında temel bilgim var. Birbirlerine benzeselerde biraz farklılık olabiliyor. Ayrıca Bunu şematik tasarım olarak gerçekleyecektim.
bu zaten verilog.
şematik yada hdl rtl her yerde rtldir.
temel bilgilerini yeniden gözden geçirmelisin.
https://www.mediafire.com/?l1zmmip3z77bled (https://www.mediafire.com/?l1zmmip3z77bled)