Verilog code 단순화?

글쓴이
알고리듬
등록일
2018-05-11 02:28
조회
3,467회
추천
0건
댓글
3건
module Billboard(
    output reg [7:0] LAMP,
    input wire      enable,
    input wire      nrst,
    input wire      clk);
   
parameter [3:0] START = 4'd0,
                    S0    = 4'd1,
                    S1    = 4'd2,
                    S2    = 4'd3,
                    S3    = 4'd4,
                    S4    = 4'd5,
                    S5    = 4'd6,
                    S6    = 4'd7,
                    S7    = 4'd8,
                    S8    = 4'd9,
                    S9    = 4'd10;
                   
reg [3:0] state;
reg [3:0] cnt;

always @(posedge clk or negedge nrst) begin
    if(!nrst) begin
        state <= START;
    end
    else begin
        case(state)
            START: begin
                LAMP <= 8'b0;
                cnt <= 4'b0;
               
                if(enable)    state <= S0;
                else      state <= START;
            end
           
            S0: begin
                LAMP[0] <= 1'b1;
                state <= S1;
            end
           
            S1: begin
                LAMP[1] <= 1'b1;
                state <= S2;
            end
           
            S2: begin
                  LAMP[2] <= 1'b1;
                  state <= S3;
            end
           
            S3: begin
                  LAMP[3] <= 1'b1;
                  state <= S4;
            end
           
            S4: begin
                  LAMP[4] <= 1'b1;
                  state <= S5;
            end
           
            S5: begin
                  LAMP[5] <= 1'b1;
                  state <= S6;
            end
           
            S6: begin
                  LAMP[6] <= 1'b1;
                  state <= S7;
            end
           
            S7: begin
                  LAMP[7] <= 1'b1;
                  state <= S8;
            end
           
            S8: begin
                  LAMP <= 8'b0;
                 
                  if(cnt < 5)  state <= S9;
                  else      state <= START;
            end
           
            S9: begin
                  LAMP <= 8'b11111111;
                 
                  cnt <= cnt + 4'd1;
                  state <= S8;
            end
        endcase   
        end
        end                                                                         
endmodule

광고판에 불을 들어오게하는 간단한 코드입니다.
이 코드를 간략하게 줄여서 작성이 가능하다는데
도저히 머리를 싸매도 간략하게 줄이는 방법을 모르겠습니다.
선배님들께 도움을 요청합니다ㅠㅠ

  • 토루크막토 ()

    그 디지털회로 강의때 배운 카누맵이나 최적화 방법론 같은것들 기억나시죠? 이럴때 쓰라고 있는겁니다. 필요없는 state 들을  optimization하는게 최선인데 코드라인이 많이줄지는 않을것같네요.

  • 댓글의 댓글 알고리듬 ()

    감사합니다!!

  • 달빛연구자 ()

    얼른 봐서는 for문으로 단순화 할 수 있을 것 같은데요.

목록


과학기술Q&A

게시판 리스트
번호 제목 글쓴이 등록일 조회 추천
4264 제품 환경시험(진동/충격) 관련해서 정보를 얻고 싶은데 방산가고싶다 06-03 2646 0
4263 지역별 인구 분포 (2018 기준) 댓글 2 시간 04-13 4929 0
4262 연령별 인구수: 총선 예측 댓글 3 시간 04-13 4070 0
4261 countries by hospital beds (나라별 병동수 순위) 댓글 7 시간 03-18 3120 0
4260 회로설계를 AI 가?? 댓글 5 겸손 03-02 7077 0
4259 저녁, 2시간 숙면후 몸무게 차이(질량 보존의 법칙?) 베컴므 03-01 3486 0
4258 반도체 공정관련 질문드립니다! 과학지식없음 01-31 3248 0
4257 우라늄 원심분리기 구조, 원리에 대해 알고 싶습니다. 댓글 1 멍~ 01-19 2760 0
4256 유기발광층 굴절률 문의 댓글 1 dfjkasd 01-13 2346 0
4255 무전해 니켈(Ni) 도금 두께,, 문의.. 댓글 1 방산가고싶다 12-13 3367 0
4254 tensor field에 관한 질문 rpw2019 10-24 2401 0
4253 디지털논리회로 너무어려워요 문제가 ㅠ 도와주세요 댓글 2 빵꾸똥꾸 10-24 5496 0
4252 반도체 웨이퍼를 연마하게 되면 가운데 부분이 볼록하게 된다는데요.. 가운데를 오목하게 연마하는 방법이 뭐가… 댓글 1 parkice 10-16 3022 0
4251 아크릴레이트 < > 아크릴 폴리머,, 비전공자 질문.. 방산가고싶다 10-08 2387 0
4250 왜 AlN가 세라믹임에도 불구하고 높은 열전도를 가지는지 궁금합니다. 댓글 2 재료과생 10-03 3510 0
4249 반도체의 미래에 대해 조언 좀 구합니다 댓글 2 물리어네어 09-25 3833 0
4248 전자상가에 가서 질문하면 이런 답변을 댓글 4 단비사랑해 08-27 2997 0
4247 재료과에서 유명한 국내학회지 뭐뭐있을까요?? 댓글 1 재료공 08-26 2711 0
4246 3집법 반도체에 대해서! 댓글 1 soarsoarr 08-25 2816 0
4245 센서 기술 질문이요~ 댓글 5 단비사랑해 08-22 2660 0


랜덤글로 점프
과학기술인이 한국의 미래를 만듭니다.
© 2002 - 2015 scieng.net
모바일 버전으로 보기