모든 소스는 Altera Quartus 9.0 SP2 컴파일러,  DE2-70 보드를 기반으로 합니다.


베릴로그는 대부분  비트단위 핸들링을 하는것이 , C언어와는 다르게 느낄수 있는 색다른 매력인것 같다.
직접 Hardware Design과 관계되다보니 , 그런듯..

module ShiftRegister
(clk,clock_enable,
load_en,reset,
input_D,input_status_LED,
output_Q, load_en_LED,clock_enable_LED);

input clk;  //use KEY1  clock input;
input clock_enable; //iSW16  is CE input
input load_en;  //iSW17 is load_en input
input reset; //Use KEY0 Asynchronous Reset Operation
input [7:0] input_D; //use iSW7-0 input data , connected with LEDR_X
output [7:0] input_status_LED; //status for input -  LEDR_X
output load_en_LED; //status for load_en
output clock_enable_LED; //status for clock_enable
output reg [7:0] output_Q; //use LEDG display the output data Q

assign input_status_LED = input_D;
assign load_en_LED = load_en;
assign clock_enable_LED = clock_enable;

always @ (negedge reset or posedge clk)begin
 if (!reset) //if reset is 1
  output_Q <= 8'b00000000; //all output set to 0
 else begin //otherwise
  if (clock_enable) //clock_enable and posedge clk -> shift operation
   output_Q <= {1'b0,output_Q[7:1]};  //Logical Shift Right
  else if(load_en) //(load_en signal)? (new data input) : (existing data)
   output_Q <= input_D;
 end
end
endmodule

저작자 표시 비영리 변경 금지
신고
by Sone 2009.10.13 23:30
| 1 |