ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 15
  1. #1
    2009/01/05
    اصفهان
    127
    1

    تو رو خدا کمک. طراحی ALU با verilog

    سلام
    استادمون گفته با verilog یه alu طراحی کنید
    تو رو خدا یه چیزی برام جور کنید 2 نمره داره
    :angry: :cry:
    ^^^^^^^^^^^^^
    خواستن توانستن است

    ^^^^^^^^^^^^^
  2. #2
    2009/08/26
    68
    1
    EMP

    پاسخ : تو رو خدا کمک. طراحی ALU با verilog

    سلام دوست عزيز
    اين كه نگراني نداره تمام شماتيك يك alu توي كتاب معماري كامپيوتر موريس مانو موجوده .فقط كافيه كه اون رو توي نرم افزار ise و ويا quartus طراحي كنيد وتبديل به كد هاي verilog كنيد.من قبلا يك alu چهار بيتي رو با quartus طراحي كرده بودم كه از زبان verilog استفاده كردم.براي دانلود اين پروژه از لينك زير استفاده كن مي توني همين رو به استادت بدي

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  3. #3
    2009/01/05
    اصفهان
    127
    1

    پاسخ : تو رو خدا کمک. طراحی ALU با verilog

    :wow:
    دوست عزیز خیلی خیلی از شما ممنونم
    منتها پسوند bdf با چی باز میشه
    آخه من نرمافزار quartus را ندارم
    اگه زحمتی نیست لطف کنید و متن برنامه را بزارید
    خیلی خیلی ممنون
    ^^^^^^^^^^^^^
    خواستن توانستن است

    ^^^^^^^^^^^^^
  4. #4
    2009/08/26
    68
    1
    EMP

    پاسخ : تو رو خدا کمک. طراحی ALU با verilog

    كدهاي يك 4 بيتي

    module alu(a,b,cin,alu,carry,zero,ctl);

    input [3:0] a,b; // port A,B
    input cin ; // carry input from carry flag register
    output [3:0] alu; // the result
    output carry; // carry output
    output zero ; // zero output
    input [3:0] ctl ; // functionality control for ALU
    wire [4:0] result; // ALU result

    assign result = alu_out(a,b,cin,ctl);
    assign alu = result[3:0];
    assign carry = result[4] ;
    assign zero = z_flag(result) ;

    function [4:0] alu_out;
    input [3:0] a,b ;
    input cin ;
    input [3:0] ctl ;
    case ( ctl )
    4'b0000: alu_out=b; // select data on port B
    4'b0001: alu_out=b+4'b0001 ; // increment data on port B
    4'b0010: alu_out=b-4'b0001 ; // decrement data on port B
    4'b0011: alu_out=a+b; // ADD without CARRY
    4'b0100: alu_out=a+b+cin; // ADD with CARRY
    4'b0101: alu_out=a-b ; // SUB without BORROW
    4'b0110: alu_out=a-b+(~cin); // SUB with BORROW
    4'b0111: alu_out=a&b; // AND
    4'b1000: alu_out=a|b; // OR
    4'b1001: alu_out=a^b; // EXOR
    4'b1010: alu_out={b[3:0],1'b0}; // Shift Left
    4'b1011: alu_out={b[0],1'b0,b[3:1]}; // Shift Right
    4'b1100: alu_out={b[3:0],cin}; // Rotate Left
    4'b1101: alu_out={b[0],cin,b[3:1]}; // Rotate Right
    default : begin
    alu_out=9'bxxxxxxxxx;
    $display("Illegal CTL detected!!"
    end
    endcase /* {...,...,...} is for the concatenation.
    {ADD_WITH_CARRY,SUB_WITH_BORROW}==2'b11 is used
    to force the CARRY==1 for the increment operation */
    endfunction // end of function "result"

    function z_flag ;
    input [4:0] a4 ;
    begin
    z_flag = ^(a4[0]|a4[1]|a4[2]|a4[3]) ; // zero flag check for a4
    end
    endfunction

    endmodule

    و يك 8 بيتي


    module alu(CLK,RESET,A,B,Y,OP,C,N,V,Z);

    //************************************************** **
    // 8 bit arithmetic logic unit
    //
    // parameter:
    // CLK.......system clock
    // RESET.....System Reset
    // A.........A input
    // B.........B input
    // OP........operation to perform
    // Y.........8 bit result output
    // C.........carry status
    // V.........overflow status
    // N.........sign status
    // Z.........zero status
    //
    //************************************************** **
    input CLK,RESET;
    input [7:0] A;
    input [7:0] B;
    input [15:0] OP;
    output [7:0] Y;
    output C;
    output V;
    output N;
    output Z;
    //------------------------------------------------------
    // internal nodes
    //------------------------------------------------------
    reg [7:0] Y,LogicUnit,AluNoShift;
    wire [7:0] ArithUnit;
    reg shiftout;
    wire C,V,N,Z;

    wire carryout;
    wire ovf;
    reg Neg; //negative status from ALU
    reg Zero; //Zero Status from ALU

    //-----------------------------------------------------------
    // Arithmetic unit
    //
    // gona use myAddSub for this part...it seems to work right...
    // rather than trying to infer the thing.
    //
    // operation of the adder subtractor is as follows
    //
    // OP[0] OP[1] carry | operation
    // 0 0 0 | Y = A - 1;
    // 0 0 1 | Y = A;
    // 0 1 0 | Y = A - B - 1;
    // 0 1 1 | Y = A - B;
    // 1 0 0 | Y = A;
    // 1 0 1 | Y = A + 1;
    // 1 1 0 | Y = A + B;
    // 1 1 1 | Y = A + B + 1;
    //
    //------------------------------------------------------------

    myAddSub Add1(.A(A),.B(B),.CI(C),.ADD(OP[0]),.BOP(OP[1]),.Y(ArithUnit),.CO(carryout),.OVF(ovf));

    //---------------------------------------------
    // Logic Unit
    // OP[1] OP[0] | operation
    // 0 0 | Y = A and B
    // 0 1 | Y = A or B
    // 1 0 | Y = A xor B
    // 1 1 | Y = Not A
    //---------------------------------------------

    always @ (A or B or OP[1:0])
    begin
    case (OP[1:0])
    2'b00:LogicUnit = A & B;
    2'b01:LogicUnit = A | B;
    2'b10:LogicUnit = A ^ B;
    2'b11:LogicUnit = !A;
    default:LogicUnit = 8'bx;
    endcase
    end
    //----------------------------------------------
    // Select between logic and arithmatic
    // OP[2] | operation
    // 0 | Arithmetic operation
    // 1 | Logical Operation
    //----------------------------------------------
    always @ (OP[2] or LogicUnit or ArithUnit)
    begin
    if(OP[2])
    AluNoShift = LogicUnit;
    else
    AluNoShift = ArithUnit[7:0];
    end
    //-----------------------------------------------
    // Shift operations
    //
    // OP[3] OP[4] OP[5] | operation
    // 0 0 0 | NOP
    // 1 0 0 | Shift Left (ASL)
    // 0 1 0 | Arithmentic Shift Right (ASR..new)
    // 1 1 0 | Logical Shift Right (LSR)
    // 0 0 1 | Rotate Left (ROL)
    // 1 0 1 | Rotate Right (ROR)
    // 0 1 1 | NOP
    // 1 1 1 | NOP
    //-----------------------------------------------
    always @ (OP[5:3] or AluNoShift or C)
    begin
    case(OP[5:3])
    3'b000: begin
    Y = AluNoShift; //do not shift output
    shiftout = 0;
    end
    3'b001: begin
    Y = {AluNoShift[6:0],1'b0}; //ASL
    shiftout = AluNoShift[7];
    end
    3'b010: begin
    Y = {AluNoShift[7],AluNoShift[7:1]}; //ASR
    shiftout = AluNoShift[0];
    end
    3'b011: begin
    Y = {1'b0,AluNoShift[7:1]}; //LSR
    shiftout = AluNoShift[0];
    end
    3'b100: begin
    Y = {AluNoShift[6:0],C};
    shiftout = AluNoShift[7];
    end
    3'b101: begin
    Y = {C,AluNoShift[7:1]}; //LSR
    shiftout = AluNoShift[0];
    end
    3'b110: begin
    Y = AluNoShift; //do not shift output
    shiftout = 0;
    end
    3'b111: begin
    Y = AluNoShift; //do not shift output
    shiftout = 0;
    end
    default: begin
    Y = 8'bx;
    shiftout = 0;
    end
    endcase
    end
    //-----------------------------------------------------------
    // Generate the status bits for the status registers
    //
    //-----------------------------------------------------------

    always @(Y)
    begin
    if(!Y[0] & !Y[1] & !Y[2] & !Y[3] & !Y[4] & !Y[5] & !Y[6] & !Y[7])
    Zero = 1;
    else
    Zero = 0;
    end

    always @ (Y[7])
    Neg = Y[7];

    //-----------------------------------------------------------
    // Carry Status Register
    // OP[6] OP[7] OP[8] | operation
    // 0 0 0 | NOP
    // 0 0 1 | Carry <- Adder/Sub Carry/Borrow
    // 1 0 1 | Carry <- Shifter Out
    // 0 1 1 | Carry <- 0
    // 1 1 1 | Carry <- 1
    //-----------------------------------------------------------

    status CARRY1(.clk(CLK),.reset(RESET),.load(OP[8]),.a(carryout),.b(shiftout),.c(1'b0),.d(1&#03 9;b1),.sel(OP[7:6]),.s(C));

    //-----------------------------------------------------------
    // Overflow status register
    // OP[9] OP[10] OP[11] | operation
    // 0 0 0 | NOP
    // 0 0 1 | Overflow <- Adder/Sub Overflow
    // 1 0 1 | Overflow <- External
    // 0 1 1 | Overflow <- 0
    // 1 1 1 | Overflow <- 1
    //-----------------------------------------------------------

    status OVF1(.clk(CLK),.reset(RESET),.load(OP[11]),.a(ovf),.b(Y[6]),.c(1'b0),.d(1'b1),.sel(OP[10:9]),.s(V));

    //-----------------------------------------------------------
    // Zero Status Register
    // OP[12] OP[13] | operation
    // 0 0 | NOP
    // 1 0 | Zero <- Zero Input1
    // 0 1 | Zero <- Zero Input2
    // 1 1 | Zero <- 0
    //-----------------------------------------------------------

    status ZERO1(.clk(CLK),.reset(RESET),.load(1'b1),.a( Z),.b(Zero),.c(1'b1),.d(1'b0),.sel(OP[13:12]),.s(Z));

    //-----------------------------------------------------------
    // Negative Status Register
    // OP[14] OP[15] | operation
    // 0 0 | NOP
    // 1 0 | Neg <- Neg Input1
    // 0 1 | Neg <- Neg Input2
    // 1 1 | Neg <- 0
    //-----------------------------------------------------------

    status NEG1(.clk(CLK),.reset(RESET),.load(1'b1),.a(N ),.b(Neg),.c(1'b1),.d(1'b0),.sel(OP[15:14]),.s(N));

    endmodule
  5. #5
    2009/01/05
    اصفهان
    127
    1

    پاسخ : تو رو خدا کمک. طراحی ALU با verilog

    داداش محمد بابا دمت گرم
    بخدا شرمنده مون کردی
    فدات بشم
    ^^^^^^^^^^^^^
    خواستن توانستن است

    ^^^^^^^^^^^^^
  6. #6
    2007/12/18
    7
    0

    پاسخ : تو رو خدا کمک. طراحی ALU با verilog

    سلام آقا محمد
    من این فایل زیپ را دانلود کردم و بعد از اجرای آن به چند فولدر برخوردم
    اما نمی دانم کدام یک را به استاد تحویل دهم
    و نیز نتوانستم نرم افزار کوارتوس را پیدا کنم
    لطفا مرا راهنمایی کنید
    با تشکر فراوان :cry2:
  7. #7
    2010/11/17
    2
    0

    پاسخ : تو رو خدا کمک. طراحی ALU با verilog

    سلام...
    من دانشجوی کامپیوتر هستم و برای درس ریزپردازنده باید یه alu چهار بیتی با زبان bascom طراحی کنم.
    میشه کمکم کنید ، آخه من هیچ چیز از avr و زبان bascom بلد نیستم
  8. #8
    2010/12/01
    3
    0

    پاسخ : تو رو خدا کمک. طراحی ALU با verilog

    سلام
    خيلي ممنون از اطلاعات مفيدي كه گذاشتيد . من يه پروژه دارم طراحي alu چهاربيت با نرم افزار quartus . الان اولين بار كه با اين نرم افزار كار مي كنم براي تحويل پروژه هم وقتي ندارم بايد هفته آينده تحويل بدم ،وقتي فايل را كامپايل مي كنم خطاهاي زير را مي دهد ، تو رو خدا هركس مي تونه كمكم كنه ممنون مي شوم
    Info: ************************************************** *****************
    Info: Running Quartus II Analysis & Synthesis
    Info: Version 10.0 Build 218 06/27/2010 SJ Full Version
    Info: Processing started: Sat Dec 11 08:55:27 2010
    Info: Command: quartus_map --read_settings_files=on --write_settings_files=off exam -c exam
    Info: Parallel compilation is enabled and will use 2 of the 2 processors detected
    Info: Found 1 design units, including 1 entities, in source file exam.v
    Info: Found entity 1: alu
    Error: Top-level design entity "exam" is undefined
    Error: Quartus II Analysis & Synthesis was unsuccessful. 1 error, 0 warnings
    Error: Peak virtual memory: 192 megabytes
    Error: Processing ended: Sat Dec 11 08:55:28 2010
    Error: Elapsed time: 00:00:01
    Error: Total CPU time (on all processors): 00:00:01
    Error: Quartus II Full Compilation was unsuccessful. 3 errors, 0 warnings
  9. #9
    2009/08/26
    68
    1
    EMP

    پاسخ : تو رو خدا کمک. طراحی ALU با verilog

    سلام
    خطای
    Error: Top-level design entity "exam" is undefined

    یعنی مرحله بالای کار شما واسه نزم افزار ناشناسه.مثلا فرض کنید شما اول با vhdl یک کد می نویسید و یک جمع کننده درست می کنید وقراره که از این جمع کننده توی یک پروزه دیگه استفاده کنید.راه سادش اینه که کدهای vhdl شما تبدیل به یک بلوک ویک قطعه شماتیکی بشه وبعد از اون..این قطعه جدید رو باید به quartus معرفی کنید اگه این کاری نکنید خطای بالا رو میده و میگه قطعه ای که به اسم "exam" رو که قبلا درست کردی وحالا داری توی یک پروزه جدید ازش استفاده می کنی رو من نمی شناسم و واسه من تعریف شده نیست و وقتی من دارم همه قطعه های پروزه شما رو کمپایل میکنم و بخش لینکر نرم افزار داره همه رو بهم می چسبونه تا یک قطعه کلی بسازه با یک ابهام به اسم"exam" روبرو می شه.
  10. #10
    2010/11/13
    2
    1

    پاسخ : تو رو خدا کمک. طراحی ALU با verilog

    `timescale 1ns/100ps
    module ALU8 (input [7:0] left, right,
    input [1:0] mode,
    output reg [7:0] ALUout);
    always @(left, right, mode) begin
    case (mode)
    0: ALUout = left + right;
    1: ALUout = left - right;
    2: ALUout = left & right;
    3: ALUout = left | right;
    default: ALUout = 8'bX;
    endcase
    end
    endmodule
صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 15

موضوعات مشابه

  1. طراحی ضرب کننده 8بیتی با verilog
    توسط mah62 در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 1
    آخرين نوشته: 2013/08/07, 06:23
  2. کمک در مورد verilog
    توسط ehsanarn در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 2
    آخرين نوشته: 2011/04/11, 03:09
  3. فرق verilog و system verilog
    توسط shayanb2004 در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 0
    آخرين نوشته: 2010/01/09, 23:53
  4. RSA in Verilog
    توسط HAMED80IR در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 11
    آخرين نوشته: 2009/05/06, 00:29
  5. Verilog compiler
    توسط NNT در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 3
    آخرين نوشته: 2006/09/04, 11:42

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •