EDA365电子工程师网

标题: testbench如何产生27MHz的时钟 [打印本页]

作者: schx    时间: 2013-5-9 21:30
标题: testbench如何产生27MHz的时钟
本帖最后由 schx 于 2013-5-9 21:38 编辑
: \: A+ r% k+ {" Z6 h. P" Z0 i* V& r& n3 o; G
如题,是不是只能用`timescale然后再always #延迟 clk=~clk 这样来产生呢?有没有其他的办法。) ?( e9 ^/ q, i/ K7 d& f, Q
最近面试一家公司,给我的笔试题中有一道仿真题:用testbench写出以27MHZ时钟时序为基准的10位的随机数串,个数不计,并用modelsim仿真出来。( Z. G5 k  c# ^$ K
4 I3 C2 i  o6 |7 d6 ~
由于小弟没怎么写过fpga程序,所以请假版上各位朋友,这道题所谓的10位随机数串是每个时钟周期产生一个bit还是10个bit。。7 H- q8 I" L4 u9 l8 W1 ^& g

& G) g+ W  F5 jreg [9:0] rand_data;
$ d2 z' J, W" B- e- \) N4 P
. [. g& x5 U. t4 B( B9 ^rand_data={$random}%1024;6 h9 s2 t  }5 d* x7 W- X' D
这样可以吗?/ t% n# N- _# d, v
8 I0 K" x- O$ n3 |! Y
小弟电脑上连modelsim都木有装 = =
作者: zgq800712    时间: 2013-5-14 21:31
本帖最后由 zgq800712 于 2013-5-14 21:32 编辑 $ m* I6 J( z$ D) s
' B7 Y4 v3 k) H; x1 u/ x
`timescale 1ns/1ps
( V" G" \/ G8 I4 \4 P' H0 k4 ]: S$ S3 v/ ~! `, G
module fifo_top_tb();
2 Q% ?) H9 m4 C3 [- E* R  ], M    reg clk;0 ~9 `* q+ E/ _$ O/ b8 o7 U
    reg rst;
1 _4 A9 d8 E$ ]. R+ t+ ^/ O    reg wr_en;# U6 ]3 N& o1 {1 k% q! c/ T
    reg rd_en;; V( z7 t4 D+ c7 W( I2 A9 r
    reg [7:0]data_in;
3 w3 @1 C% w6 T7 Y- k# [# p    wire [7:0]data_out;0 J; g! ]! b& i5 j2 s) \4 r
    5 j- m: g5 `5 |* B) h
fifo_syn_top myfifo(.clk(clk),+ c( G; N- F9 K, i0 ?  t
                    .rst(rst),
2 U/ [/ d( u2 O6 s4 J8 Q: ]% r                    .wr_en(wr_en),8 s1 g% m& E5 U
                    .rd_en(rd_en),' j5 y1 e8 k4 O3 _
                    .data_in(data_in),- j9 a2 k7 ~! v; s( O; l& Y4 q' Z5 p5 X
                    .data_out(data_out));4 D3 V6 W* m0 _2 {2 z4 Z
integer i,j;  R) I+ _7 F5 J% h
parameter T = 18.518;0 v) W  F  j8 J9 w6 X
always
2 u* S- A6 B# N1 }6 ybegin( ~3 r8 x' W4 q
        clk=0;
, F2 ?" e, k+ Q  Q! V        #T ;
- g6 L4 U9 l! X! T        clk=1;
' a9 |. p; o) d* [# ]" f: N        #T ;$ s7 H. c! v0 s
end2 ^% q4 J% G% F- M: C4 }. |$ O. B
) C) e. _( `( Z1 o  \
initial, _8 Y+ J1 d- g% ^; c
  begin
6 E4 N( k" Z" d3 u    clk=0;3 b; e' U" N' z8 M- o% c
    rst=0;6 B& I  j: y9 B! P: S& X# L) e
    wr_en=1;" z: P2 m3 q* R. t( D
    rd_en=0;: R; r- c4 ^. p, N: Q
    #20 data_in[7:0]=8'b11111111;! a% k* M; }% i7 j! _& R; h
    #200 rst=1;
( X) H! U. K" y* Y) `    wr_en=1;
: h& {/ j& V* k# y# E    rd_en=0;! h. A" x: D% R+ N8 S
     repeat(10)
/ V8 e3 B2 N% |      begin. w' {2 M: p: u$ r/ U' R: d
        #100 data_in[7:0]=$random;          ' P& x. d# h% f- B" j
      end; R# {8 h/ D1 `5 C
    #6400 wr_en=0;
! s1 N$ d: ~/ W, T( M+ T' q    #10 rd_en=1;* L. v( Z! a' P# ?0 w" l% ?
         #6400  $stop;
' K6 l7 r$ {- o' w+ d  end  p% ^6 p% u0 V' Z* |
  & P9 T4 j* F6 S
endmodule  0 u* n" J4 A8 M0 |( m

) i: B% o  Z- P7 s5 V; ~6 }7 [5 H  Z8 V& Y2 r6 b9 N

, U6 Z/ o  @+ m. n" o; ^& f# Q楼主 你难道要 1ns/1fs    ?   这样?
' a+ V( ~8 o* C: h! z
作者: schx    时间: 2013-5-16 23:12
zgq800712 发表于 2013-5-14 21:31 ' H- V3 C! a% @7 k$ s
`timescale 1ns/1ps( _3 Z& _# Z, F' c
8 Y$ h' N- Y# O
module fifo_top_tb();
/ t0 q  c# }' k
嗯,没什么问题了,小弟菜鸟,没怎么实际写过verilog程序以为这题有什么玄机  =。=,其实最后我也是这样来产生时钟的。
作者: zgq800712    时间: 2013-5-16 23:21
schx 发表于 2013-5-16 23:12 ; Q, K0 K5 N7 J# D+ D( [) Q- }0 X
嗯,没什么问题了,小弟菜鸟,没怎么实际写过verilog程序以为这题有什么玄机  =。=,其实最后我也是这样来 ...
2 ]0 C+ J# f7 L8 e2 l! m
我也是菜鸟,多自己看的,现在找到工作了?
作者: schx    时间: 2013-5-27 10:00
zgq800712 发表于 2013-5-16 23:21
) _' W0 L3 T" t  z8 R我也是菜鸟,多自己看的,现在找到工作了?

' @, _1 W% B$ T0 C+ n- ?恩,现在找到工作了,今年形势比较差,所以在杭州这边一家医疗器械创业公司先做了。。
作者: zgq800712    时间: 2013-5-27 15:22
schx 发表于 2013-5-27 10:00 + ^4 J* }0 ~9 Z5 @- x& i9 s$ a
恩,现在找到工作了,今年形势比较差,所以在杭州这边一家医疗器械创业公司先做了。。
4 Z1 _  Q3 D+ `* W7 G
哈,是FPGA的嘛?
作者: schx    时间: 2013-5-27 22:45
zgq800712 发表于 2013-5-27 15:22 # s9 N4 _. }6 U) Z
哈,是FPGA的嘛?

6 A4 n7 W& u3 A/ l) E* `5 |嗯,硬件和fpga都做。
作者: zgq800712    时间: 2013-5-28 11:14
schx 发表于 2013-5-27 22:45 " n' g" t% X% l9 @6 A. p
嗯,硬件和fpga都做。
8 J$ K* R5 n- F9 r- `) v6 M
恩,一般不分的公司就是FPGA相关倾向于让硬件工程师做,哈,多看看熟悉下公司产品渠道,客户等。
作者: wide_road    时间: 2013-7-4 13:27
没有功能仿真,希望能给你一些参考吧) L+ b/ K+ J+ S, w
`timescale 1ns / 1ps
( W4 x+ w* {* Y, U
$ ?" [) l7 S9 Qmodule test;
# I) F0 @0 y4 ^3 r9 z
  |1 J6 i! j6 k# a" M& D# Zparameter CLK_PERIOD = 37.037; //27mhz 对应的时钟周期
. d( A4 |1 `6 h) l% e1 Greg sys_clk;
% L  r* {; R' y) X9 d: K+ qreg reset;
6 _' X, L* I9 I( W) t8 Dinitial begin. O: F1 r( z. V
  sys_clk = 0;
) L! E" U- q# I7 L) L+ ^4 j  reset = 0;) v6 o& c0 _) P! e" e. J/ W& w+ a
  #10 reset = 1;
8 ~2 G, C4 J  h; w, w* U  #100 reset =0;
3 [0 t" Q4 {, f% x3 a0 yend
* |. Q2 T3 w: B; ]// 产生27mhz时钟
# X: f+ [5 |1 C: z0 A* Lalways #(CLK_PERIOD/2) sys_clk = ~sysclk;
! Q5 x4 q8 }, Q- m2 P+ c5 A+ v# v/ p. c9 e. b: w" Q. s) p( \
reg [9:0] rand_data;
! i+ [9 `+ X7 W( e" r5 q
. E: K1 f" u! d7 c% n9 x9 j5 ialways @ (posedge sys_clk) begin; \7 l8 C1 O7 U4 E# {5 Z
  if(reset)
4 {/ K# N, A) l9 ]' f    rand_data <= 0;4 l. S4 E+ J6 G, r- O4 t3 v
  else5 |! M3 z3 L; x  }5 h
    rand_data <= $random;
2 f( c6 x" t, c1 H" L; B, \. ^end; `+ a" q: @# [/ W7 Y
endmodule




欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2