OpenCores
URL https://opencores.org/ocsvn/ssbcc/ssbcc/trunk

Subversion Repositories ssbcc

[/] [ssbcc/] [trunk/] [core/] [9x8/] [peripherals/] [latch.v] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 sinclairrf
//
2
// latch peripheral for @INSIGNAL@
3
//
4
generate
5
// Register the input signal when  commanded.
6
reg [@LATCH_WIDTH@-1:0] s__latch = {(@LATCH_WIDTH@){1'b0}};
7
always @ (posedge i_clk)
8
  if (i_rst)
9
    s__latch <= {(@LATCH_WIDTH@){1'b0}};
10
  else if (s_outport && (s_T == 8'd@IX_O_LATCH@))
11
    s__latch[0+:@WIDTH@] <= @INSIGNAL@;
12
  else
13
    s__latch <= s__latch;
14
// Latch the mux address when commanded.
15
reg [@ADDR_WIDTH@-1:0] s__addr = {(@ADDR_WIDTH@){1'b0}};
16
always @ (posedge i_clk)
17
  if (i_rst)
18
    s__addr <= {(@ADDR_WIDTH@){1'b0}};
19
  else if (s_outport && (s_T == 8'd@IX_O_ADDR@))
20
    s__addr <= s_N[0+:@ADDR_WIDTH@];
21
  else
22
    s__addr <= s__addr;
23
// Run the mux.
24
integer ix;
25
always @ (posedge i_clk)
26
  if (i_rst)
27
    s__select <= 8'h00;
28
  else begin
29
    s__select <= 8'h00;
30
    for (ix=0; ix<@LATCH_WIDTH@/8; ix=ix+1)
31
      if (ix[0+:@ADDR_WIDTH@] == s__addr)
32
        s__select <= s__latch[8*ix+:8];
33
  end
34
endgenerate

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.